douchen7555 2019-02-16 13:20
浏览 60
已采纳

Javascript encodeURI返回意外值

I have a problem URL-encoding a text with javascript. I am in Germany, where we have these "Umlaute" (ÄÖÜ), and these letters make some problems.

An online encoder/decoder returned the following results for the word "Äpfel" (apples).

Äpfel >>> url-encode >>> %C3%84pfel

%C3%84pfel >>> url-decode >>> Äpfel

For testing, I created the following php.file (poc.php) with no php-content, just the javascript:

<script type="text/javascript">
    var t = "Äpfel";
    t = encodeURI(t);
    alert(t);
    t = decodeURI(t);
    alert(t);
</script>

The first alert returns "%EF%BF%BDpfel", which differs from the result of the online encoder.

The second alert returns "�pfel" (yes, the diamond with the "?").

It seems that javascript cannot decode the text it just encoded.

I guess the cause of this behaviour is somewhere in the PHP settings. When I just rename the file from "poc.php" to "poc.html" the encoding is correct and the alerts return the same results as the online encoder/decoder.

When I check the current encoding, javascript and php return "utf-8".

In my "real" project I have a ".js" file included in my php-file (with the same problem).

<script type="text/javascript" src="scripts/functions.js"></script>

Has anybody an idea what causes this behaviour?

  • 写回答

1条回答 默认 最新

  • duanpo1498 2019-02-16 15:32
    关注

    The weird byte stream %EF%BF%BD you're receiving is utf-8 version of the Unicode replacement character, that is, literally the � symbol.

    The Javascript portion can url-decode the text it just url-encoded, it was just asked to encode the symbol for a missing symbol.

    So: some part of your system is not using utf-8, but some other character set instead, and there's an unnecessary conversion done. My guess is that the file is encoded in latin-1, aka. ISO 8859-1, and PHP tries to read it as if it was UTF-8, converting the unrecognized character 0xc4 ('Ä' in latin-1) to the replacament character symbol.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?