2011-05-07 183 views
1

嗨, 我对用urlencode和rawurlencode问题...URL编码PHP

我测试出来,它们产生不同的结果,例如Firefox &一些网络编码器...

例;

火狐&编码器

ä = %C3%A4 
ß = %C3%9F 

PHP rawurlencode &用urlencode

ß = %DF 

ä = %E4 

任何人有不同的硬编码和替换一些想法?

干杯

+2

您需要了解*为什么*您看到了这一点,否则“解决”问题只会在以后导致问题。请参阅http://stackoverflow.com/q/1549213/50079。 – Jon 2011-05-07 12:46:16

回答

3

他们产生不同的输出,因为您提供不同的输入,也就是不同的字符编码:Firefox使用UTF-8和你的PHP脚本使用Windows-1252。虽然在这两种字符集的字符是在相同的位置(ß = 0xDF,ä = 0xE4),即,具有相同的码点,它们编码的代码点不同:

CP | UTF-8 | Windows-1252 
------+--------+-------------- 
0xDF | 0xC39F |   0xDF 
0xE4 | 0xC3A4 |   0xE4 

使用相同的字符编码(最好是UTF-8),你会得到相同的结果。

+0

谢谢它的工作。 $ str =“hehenäturlichß”; $ out = iconv('ISO-8859-2','UTF-8',$ str); echo rawurlencode($ out); 产生的结果我想... 谢谢 – king 2011-05-07 13:29:08

0

也许使用Base64编码,并在使用后,不使游客担心这个网址的? 阿尔森