現在、ユーザーが他の人にメールでカードを送ることができるeカードシステムを完成させています。
メールには、ブラウザで同じカードを表示するためのリンクも含まれています。このリンクは、基本的に、テキストを次のようにエンコードすることによって生成されます。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 =中文のようなURLを使用して、$ _ GET []を出力しようとすると、正常に機能します。つまり、それは明らかに漢字を処理できないbase64_encode
またはです。base64_decode