如何在PHP中正确编码带有外来字符的URL? 我假设urlencode()可以做到这一点,但事实并非如此。
以下网址的正确编码
http://eu.battle.net/wow/en/character/anachronos/Paddestøel/advanced
这是:
http://eu.battle.net/wow/en/character/anachronos/Paddest%C3%B8el/advanced
但urlencode对此进行编码:
http://eu.battle.net/wow/en/character/anachronos/Paddest%F8el/advanced
我在第二个例子中用什么函数对它进行编码?
答案 0 :(得分:2)
您的PHP脚本似乎使用了一些单字节编码。你可以:
通常,完全切换到UTF-8会立即修复所有编码问题,但初始迁移可能需要一些额外的工作。
答案 1 :(得分:2)
没有“正确”编码。 URL百分比编码仅表示原始字节。这取决于那些字节是什么,或者你将来如何解释它们。如果您的字符串是UTF-8编码,则百分比编码的原始字节表示为%C3%B8
。如果您的字符串不是UTF-8编码,那么它就是其他内容。如果您需要%C3%B8
,请确保您的字符串是UTF-8编码。
答案 2 :(得分:1)
使用UTF-8编码
function url_encode($string){
return urlencode(utf8_encode($string));
}
然后使用此函数对您的网址进行编码(在此处发表评论:http://php.net/manual/en/function.urlencode.php)