我目前正在完成一个允许用户通过邮件将卡片发送给其他人的电子贺卡系统。
邮件还包含一个在浏览器中查看同一张卡片的链接,这个链接基本上是通过对文本进行编码生成的base64_encode()
'http://www.test.com/ecards?card=' . base64_encode('your text'); // like this
这对英文文本很好,但是一旦我输入一些中文并访问链接,字符都搞砸了
汉��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()
可能与此有关。
// 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 =中文之类的网址时尝试输出 $_GET[] 时,它工作正常。所以很明显是 the base64_encode
orbase64_decode
不能处理汉字。