0

我的 php 文件采用 UTF-8 编码,我正在尝试对我的数据进行编码以安全发送到应用程序,但某些字符的编码不正确。

$text = "Š";
$text = urlencode(utf8_decode($text));
echo $text;

回声 %3F 但根据此处找到的 w3c urlencoding 参考 (http://www.w3schools.com/tags/ref_urlencode.asp),“Š”应转换为 %8A。Php 自己的参考资料也没有说明它使用的是什么参考资料。这可能是编码/解码问题还是其他问题?

4

1 回答 1

0

utf8_decode 尝试从 UTF-8 转换为 ISO-8859-1,但 ISO-8859-1 中不存在Š。所以你得到'?(= %3F),替换字符。

它存在于 CP1252(可能是其他)中,十六进制代码为 8A。所以:

$text = urlencode(iconv('UTF-8', 'CP1252', $text));

应该给你所期望的。事实上,您不应该解码 unicode 字符串。

于 2012-12-10T10:35:18.347 回答