我的php文件是UTF-8编码,我正在尝试对我的数据进行编码,以便安全地发送到应用程序,但有些字符编码错误。
$text = "Š";
$text = urlencode(utf8_decode($text));
echo $text;
Echos%3F但根据此处的w3c urlencoding参考(http://www.w3schools.com/tags/ref_urlencode.asp),“Š”应转换为%8A。 Php自己的参考也没有说明它使用的是什么参考。这可能是编码/解码问题还是别的什么?
答案 0 :(得分:0)
utf8_decode尝试从UTF-8转换为ISO-8859-1,但ISO-8859-1中不存在Š。所以你得到'?' (=%3F),替换字符。
它存在于CP1252(可能是其他的)中,在十六进制代码8A下。所以:
$text = urlencode(iconv('UTF-8', 'CP1252', $text));
应该给出你期望的东西。实际上,您不应该解码unicode字符串。