我正在创建一个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配合得很好)。
我使用this网站来创建后一个编码的字符串。
我还定义了header('Content-Type: text/html; charset=gb2312');来正确显示中文字符。
我能做些什么来正确地编码汉字吗?
谢谢!
附言:我是一个比较新的程序员,不懂中文。
发布于 2012-08-03 23:32:59
您可以使用您在标题中指定的字符集进行URLencoding。%D0%C2在gb2312中为新;%E6%96%B0在UTF-8中为新。将您的字符集切换到UTF-8,您应该可以解决这个问题,并且仍然可以显示简体中文汉字。
发布于 2012-08-03 23:36:04
为了重现您的问题,我创建了一个简单的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时,一些编辑器可能会破坏一些国际化的代码。因此,在转换之前,请确保您的文件有一个副本!
https://stackoverflow.com/questions/11798618
复制相似问题