urlencode的结果跟php文件编码有关吗?

#1 stalker

在ANSI编码的php文件中
echo urlencode('附件3:研究报告编制原则');

的输出结果是:
%B8%BD%BC%FE3%A3%BA%D1%D0%BE%BF%B1%A8%B8%E6%B1%E0%D6%C6%D4%AD%D4%F2

而在UTF-8编码的php文件中
echo urlencode('附件3:研究报告编制原则');

的输出结果是:
%E9%99%84%E4%BB%B63%EF%BC%9A%E7%A0%94%E7%A9%B6%E6%8A%A5%E5%91%8A%E7%BC%96%E5%88%B6%E5%8E%9F%E5%88%99

而在ANSI编码的php文件中
echo urlencode(iconv('gbk',utf-8','附件3:研究报告编制原则');

的输出结果则是:
%E9%99%84%E4%BB%B62%EF%BC%9A%E7%A7%91%E5%AD%A6%E6%8A%80%E6%9C%AF%E6%88%90%E6%9E%9C%E9%AA%8C%E6%94%B6%E8%AF%81%E4%B9%A6

这是为虾米?

2011-03-22 19:46:53

#2 jake

URL编码,%xx代表一个字节,在UTF8编码中的汉字是三个字节的,而GBK编码中汉字是两个字节的。所以,就会有上面的情况。

2011-03-22 20:54:09

#3 stalker

那为什么直接对UTF8编码的字符和由gbk转换成utf-8的同一个字符进行urlencode的结果不同呢(后两个结果)?

2011-03-23 08:33:25

#4 stalker

那为什么直接对UTF8编码的字符和由gbk转换成utf-8的同一个字符进行urlencode的结果不同呢(后两个结果)?

2011-03-23 08:33:36

#5 jake

你把这两个结果再decode回来就知道了。

2011-03-23 08:54:50

#6 stalker

我擦 瀑布汗。。。。:L  比较了一下午竟然用了两个不同的字符串

2011-03-23 11:14:20