Php base64_encode()带有中文字符

Php base64_encode()带有中文字符,php,base64,character,Php,Base64,Character,我目前正在完成一个ecard系统,该系统允许用户通过邮件将卡片发送给其他人 邮件还包含一个在浏览器中查看同一卡片的链接,该链接基本上是通过使用base64\u encode() 这对英文文本来说很好,但一旦我输入一些中文并访问链接,字符就都乱了 汉��N�B��Y][ۘ[�[�\�N�9�(�*���B�[�Z[��0��q��B��[\Y�YY�[�\�N�9cc�+�N�B��Y][ۘ[�[�\�N�:#��*���B��[�\�N�9.+y��� 我与我的字符集无关,它被设置为UTF-8

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

邮件还包含一个在浏览器中查看同一卡片的链接,该链接基本上是通过使用
base64\u encode()

这对英文文本来说很好,但一旦我输入一些中文并访问链接,字符就都乱了

汉��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\u encode()
base64\u 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 />';
//不起作用
echo base64_解码($body);
//汉字显示得很好!!!!
echo的简体中文:汉语; 
; echo的繁体中文:漢語;
; 回声拼音:Hányǔ
; echo的简体中文:华语;
; echo的繁体中文:華語;
; 回声中文:中文;
编辑:当我尝试输出$\u GET[]时,使用类似=中文, 它很好用。
因此,显然是
base64\u编码
base64\u解码
无法处理汉字。

base64\u的
base64\u编码>函数不处理字符,而是处理字节。他们会很高兴地转换你传递的任何内容,不会出错


这里的问题是,您用作输入的字符编码与解码后显示的页面编码不匹配。“你的文本”来自哪里?如果它来自表单提交,您需要确保表单显示的页面使用与“查看卡”页面相同的编码,或者表单具有与“查看卡”页面编码匹配的
accept字符集
属性。

base64
函数不在字符上运行,它们对字节进行操作。他们会很高兴地转换你传递的任何内容,不会出错


这里的问题是,您用作输入的字符编码与解码后显示的页面编码不匹配。“你的文本”来自哪里?如果它来自表单提交,您需要确保表单显示的页面使用与“查看卡”页面相同的编码显示,或者表单具有与“查看卡”页面编码匹配的
accept字符集
属性。

我假设您问的是PHP问题。否则,请编辑您的问题以更改标记。我假设您正在问一个PHP问题。否则,请编辑您的问题以更改标签。我真的不明白。。。我有一些中文文本,我将其复制到表单中并发送出去,在电子邮件中,中文文本被正确显示,当我点击生成的url并打开页面时,中文文本被弄乱了,但同时我打印了相同的中文文本,它显示得很好。(我只是硬编码了打印的文本,但完全一样)哦,表单和显示卡片的页面是同一页,如果有来自$\u的输入,则显示卡片,否则就是表单。@woutr\u be:不过,您必须调试一些事情。base64函数本身。我不确定是什么,当我直接复制base64编码的字符串时,它似乎工作得很好。所以现在看来,当我在电子邮件中发送链接,人们点击它时,出现了一些问题…所以我做了一个小测试:显然url中的字符串与原始字符串不同…我真的不明白。。。我有一些中文文本,我将其复制到表单中并发送出去,在电子邮件中,中文文本被正确显示,当我点击生成的url并打开页面时,中文文本被弄乱了,但同时我打印了相同的中文文本,它显示得很好。(我只是硬编码了打印的文本,但完全一样)哦,表单和显示卡片的页面是同一页,如果有来自$\u的输入,则显示卡片,否则就是表单。@woutr\u be:不过,您必须调试一些事情。base64函数本身。我不确定是什么,当我直接复制base64编码的字符串时,它似乎工作得很好。所以现在看来,当我在电子邮件中发送链接,人们点击它时,出现了一些问题…所以我做了一个小测试:显然url中的字符串与原始字符串不同。。。
// 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 />';