Urldecode斯堪的纳维亚ASCII值
我需要使用PHP解码url编码斯堪的纳维亚ASCII值的帮助。Urldecode斯堪的纳维亚ASCII值
我试图解码一个字符是这样的:
$string = "%e5";
echo rawurldecode($string);
但是这给黑钻石。与urldecode()函数相同的结果。
我正在使用<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta charset="utf-8">
。
对英文字母(如%61)使用rawurldecode()函数时效果很好。 请参阅http://www.backbone.se/urlencodingUTF8.htm所有URL编码的ASCII码。
E5
是ISO-8859- 1个字符的编码表示。
你的问题是你正在输出一个ISO-8859-1编码的字符串,但却告诉浏览器将它解释为UTF-8。要么改变编码在你的HTTP标头/ meta标签,或者从8859的字符串转换为UTF-8:
echo utf8_encode(rawurldecode('%e5'));
(有几乎从来没有为utf8_encode
的好时机,但在这种情况下,它实际上是简洁地执行通常你应该更喜欢使用iconv
或mb_convert_encoding
显式字符集转换。)
utf-8字符集不包含e5代码。
请用utf-8字符集检查表格。 尝试使用有效的utf-8字符串。
rawurldecode不支持“斯堪的纳维亚ascii”字符集。
尝试的iconv功能之一,支持CP865(我猜是这样的字符集,您要支持):
http://php.net/manual/ro/function.iconv-mime-decode.php
http://php.net/manual/ro/function.iconv-mime-decode-headers.php
谢谢!我试过'iconv('CP865','UTF-8',$ string); '运气不好。 – Droabs
不是iconv,因为你有url编码的CP865,而iconv需要字节编码,而不是url编码。 你也可以编写一个函数来解码url编码的CP865,字符集很小,不会太难。 – mihaitzateo
当你将字符串设置为'%C3%A5'时,它会工作吗? – RST
是的,它适用于%C3%A5。我一直坚持这个奇怪的问题几个小时.. 这个在线工具给出了同样的不好的结果https://www.functions-online.com/rawurldecode.html – Droabs