douchen7555 2019-02-16 05: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 07: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 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部