首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP urlencode中文字符

问PHP urlencode中文字符
EN

Stack Overflow用户
提问于 2012-08-03 23:22:15
回答 2查看 6.2K关注 0票数 4

我正在创建一个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');来正确显示中文字符。

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

谢谢!

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-03 23:32:59

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

票数 4
EN

Stack Overflow用户

发布于 2012-08-03 23:36:04

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

代码语言:javascript
复制
<?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时,一些编辑器可能会破坏一些国际化的代码。因此,在转换之前,请确保您的文件有一个副本!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11798618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档