Javascript encodeURI returns 意外值
Javascript encodeURI returns unexpected value
我有一个问题 URL - 使用 javascript 对文本进行编码。
我在德国,那里有这些 "Umlaute" (ÄÖÜ),这些字母会造成一些问题。
在线 encoder/decoder return 为单词“Äpfel”(苹果)编辑了以下结果。
Äpfel >>> url-编码 >>> %C3%84pfel
%C3%84pfel >>> url-解码 >>> Äpfel
为了测试,我创建了以下没有 php 内容的 php.file (poc.php),只有 javascript:
<script type="text/javascript">
var t = "Äpfel";
t = encodeURI(t);
alert(t);
t = decodeURI(t);
alert(t);
</script>
第一个警报return是“%EF%BF%BDpfel”,与在线编码器的结果不同。
第二个警报 returns“�pfel”(是的,带有“?”的菱形)。
似乎javascript无法解码它刚刚编码的文本。
我想这种行为的原因是在 PHP 设置中的某个地方。当我刚刚将文件从 "poc.php" 重命名为 "poc.html" 时,编码是正确的并且警报 return 与在线 encoder/decoder.
相同的结果
当我检查当前编码时,javascript 和 php return "utf-8".
在我的 "real" 项目中,我的 php 文件中包含一个“.js”文件(有同样的问题)。
<script type="text/javascript" src="scripts/functions.js"></script>
有人知道是什么原因导致了这种行为吗?
您收到的奇怪字节流 %EF%BF%BD 是 Unicode 替换字符的 utf-8 版本,即 � 符号。
Javascript 部分可以 url 解码刚刚 url 编码的文本,它只是被要求对缺失符号的符号进行编码。
因此:您系统的某些部分未使用 utf-8,而是使用其他一些字符集,并且进行了不必要的转换。我的猜测是该文件是用 latin-1 编码的,又名。 ISO 8859-1,PHP 尝试将其当作 UTF-8 来读取,将无法识别的字符 0xc4(latin-1 中的“Ä”)转换为替换字符符号。
我有一个问题 URL - 使用 javascript 对文本进行编码。 我在德国,那里有这些 "Umlaute" (ÄÖÜ),这些字母会造成一些问题。
在线 encoder/decoder return 为单词“Äpfel”(苹果)编辑了以下结果。
Äpfel >>> url-编码 >>> %C3%84pfel
%C3%84pfel >>> url-解码 >>> Äpfel
为了测试,我创建了以下没有 php 内容的 php.file (poc.php),只有 javascript:
<script type="text/javascript">
var t = "Äpfel";
t = encodeURI(t);
alert(t);
t = decodeURI(t);
alert(t);
</script>
第一个警报return是“%EF%BF%BDpfel”,与在线编码器的结果不同。
第二个警报 returns“�pfel”(是的,带有“?”的菱形)。
似乎javascript无法解码它刚刚编码的文本。
我想这种行为的原因是在 PHP 设置中的某个地方。当我刚刚将文件从 "poc.php" 重命名为 "poc.html" 时,编码是正确的并且警报 return 与在线 encoder/decoder.
相同的结果当我检查当前编码时,javascript 和 php return "utf-8".
在我的 "real" 项目中,我的 php 文件中包含一个“.js”文件(有同样的问题)。
<script type="text/javascript" src="scripts/functions.js"></script>
有人知道是什么原因导致了这种行为吗?
您收到的奇怪字节流 %EF%BF%BD 是 Unicode 替换字符的 utf-8 版本,即 � 符号。
Javascript 部分可以 url 解码刚刚 url 编码的文本,它只是被要求对缺失符号的符号进行编码。
因此:您系统的某些部分未使用 utf-8,而是使用其他一些字符集,并且进行了不必要的转换。我的猜测是该文件是用 latin-1 编码的,又名。 ISO 8859-1,PHP 尝试将其当作 UTF-8 来读取,将无法识别的字符 0xc4(latin-1 中的“Ä”)转换为替换字符符号。