PHP中文字符的urlencode


PHP urlencode for chinese characters

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

我必须发送查询,如:

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

但是xyz.com的脚本不会自动对汉字进行编码。因此,我需要显式地发送一个编码字符串作为参数。它变成:

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

问题是,PHP无法正确地对汉字进行编码。

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

我正在使用这个网站来创建后一个编码字符串。

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

我能做些什么来正确地对汉字进行url编码吗?

谢谢!

附言:我是一个相对较新的程序员,不懂中文。

您正在使用在标头中指定的字符集进行URLn编码%D0%C2为新在gb2312中%E6%96%B0新UTF-8。将你的字符集切换到UTF-8,你应该可以解决这个问题,并且仍然可以显示简体中文Han。

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

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

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

在http://meyerweb.com/eric/tools/dencoder/他们似乎使用了支持UTF8的JavaScript,因此也返回%E6%96%B0

PS:当从GB2312更改为UTF8时,一些编辑器可能会破坏代码——一些国际化代码。因此,在转换之前,请确保您的文件有一份副本!