如何在PHP中对url中的外来字符进行编码

时间:2014-09-25 14:06:16

标签: php encoding

如何在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

我在第二个例子中用什么函数对它进行编码?

3 个答案:

答案 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