Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于汉字的PHP URL编码_Php_Utf 8_Urlencode_Url Encoding - Fatal编程技术网

用于汉字的PHP URL编码

用于汉字的PHP URL编码,php,utf-8,urlencode,url-encoding,Php,Utf 8,Urlencode,Url Encoding,我正在创建一个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) 我正在使用网站创建后一

我正在创建一个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)

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

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

我能做些什么来正确地编码这个汉字吗

谢谢


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

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

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

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

首先,我使用UTF8编码并得到
%E6%96%B0
。后来我改成了GB2312,得到了
%D0%C2

至少,他们似乎使用了支持UTF8的JavaScript,因此也返回
%E6%96%B0

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