中文字符的PHP urlencode

问题描述:

我正在创建一个涉及将中文字符作为url参数发送的php应用程序。中文字符的PHP urlencode

我要送查询,如:

http://xyz.com/?q=新

但在xyz.com脚本不会自动编码字符中国。所以,我需要明确地发送一个编码的字符串作为参数。它变为:

http://xyz.com/?q=%E6%96%B0

的问题是,PHP不正确编码字符中国。

我试过urlencode()rawurlencode()。但他们给%D0%C2(不适用于我的目的)而不是%E6%96%B0(适用于xyz.com)作为输出。

我使用this网站来创建后者编码的字符串。

我也定义了header('Content-Type: text/html; charset=gb2312');来正确显示中文字符。

有什么我可以做的,以便正确地对中文字符进行urlencode编码吗?

谢谢! PS:我是一个相对较新的程序员,不懂中文。

您是使用您在页眉中指定的字符集的URL编码。 %D0%C2 is in gb2312; %E6%96%B0在UTF-8中是新的。将你的字符集切换到UTF-8,你应该修复这个问题,并且仍然能够显示简体中文汉字。

为了再现您的问题,我创建了一个简单的PHP文件:

<?php 
var_dump(urlencode('新')); 
?> 

首先我用UTF8编码,得到了%E6%96%B0。之后我换成了GB2312,并拿到了%D0%C2

http://meyerweb.com/eric/tools/dencoder/他们似乎使用JavaScript,这是UTF8能力,因此也返回%E6%96%B0

PS:当从GB2312更改为UTF8时,一些编辑可能会破坏某些国际化代码的代码。所以请确保在转换之前获得文件的副本!