首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带中文字符的base64_encode()

问带中文字符的base64_encode()
EN

Stack Overflow用户
提问于 2012-10-04 16:27:06
回答 1查看 3.8K关注 0票数 1

我目前正在完成一个电子卡片系统,它允许用户通过邮件将卡片发送给其他人。

邮件还包含一个在浏览器中查看同一张卡片的链接,该链接基本上是通过使用base64_encode()对文本进行编码而生成的

代码语言:javascript
复制
'http://www.test.com/ecards?card=' . base64_encode('your text'); // like this

这对英文文本很有效,但是当我输入一些中文并访问链接时,字符都被搞乱了

代码语言:javascript
复制
汉��N�B��Y][ۘ[�[�\�N�9�(�*���B�[�Z[��0��q��B��[\Y�YY�[�\�N�9cc�+�N�B��Y][ۘ[�[�\�N�:#��*���B��[�\�N�9.+y���

我与我的字符集无关,它被设置为UTF-8,我甚至打印了相同的中文文本,它显示得很完美。

所以我想知道base64_encode()和base64_decode()是否和这件事有关。

代码语言:javascript
复制
// Doesn't work
echo base64_decode($body);

// Chinese characters show up fine!!!!
echo 'simplified Chinese: 汉语; <br />';
echo 'traditional Chinese: 漢語; <br />';
echo 'Pinyin: Hànyǔ; <br />';
echo 'simplified Chinese: 华语; <br />';
echo 'traditional Chinese: 華語; <br />';
echo 'Chinese: 中文; <br />';

编辑:当我尝试使用像http://www.test.com/ecards?card=中文这样的url输出$_GET[]时,它工作得很好。因此,显然是base64_encode或base64_decode不能处理中文字符。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-04 16:55:29

base64_函数不对字符进行操作,它们对字节进行操作。它们会很高兴地转换你传入的任何东西,而不会出错。

这里的问题是,用作输入的字符的编码与解码后显示这些字符的页面的编码不匹配。“你的文字”是从哪里来的?如果它来自表单提交,则需要确保表单出现的页面使用与“视图层”页面相同的编码显示,或者表单具有与“视图层”页面的编码相匹配的accept-charset属性。

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

https://stackoverflow.com/questions/12723235

复制
相关文章

相似问题

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