3

この文字列をデコードする方法はありますか??

実際の文字列 : 他語言測試 - testing

件名としてメールを送信する際の base64 エンコード

"=?iso-2022-jp?B?GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==?="

<?php
echo base64_decode('GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==');
?>

これは base 64 エンコードです。実際の中国語の文字列にデコードできませんでした。「iso-2022-jp」を使用してエンコードされているため、オンラインの base64decode.org サイトでもこの文字列をデコードしようとしましたが、できませんでした。元の文字列を見つけるにはどうすればよいですか?

4

3 に答える 3

13

使用iconv():

<?php
$input = base64_decode('GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==');//$BB6B>8l8@B,;n(B - testing
$input_encoding = 'iso-2022-jp';
echo iconv($input_encoding, 'UTF-8', $input); //其他語言測試 - testing
?>
于 2013-09-17T05:52:12.390 に答える
2

あなたが見ているのは、MIME ヘッダーのエンコーディングです。でデコードできmb_decode_mimeheader()、 で生成できますmb_encode_mimeheader()。例えば:

<?php
mb_internal_encoding("utf-8");
$subj = "=?iso-2022-jp?B?GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==?=";
print mb_decode_mimeheader($subj);
?>

其他語言測試 - testing

mb_internal_encoding()(件名行の内容は ISO8859-1 のデフォルトの内部エンコーディングでは表現できないため、ここではへの呼び出しが必要です。)

于 2013-09-17T06:12:13.553 に答える
1

最初に文字列を UTF-8 にエンコードしてから、base 64 にエンコードしてみてください。デコードするときも同様で、文字列を base64 からデコードしてから UTF-8 からデコードします。これは私のために働いています:

php > $base = "其他語言測試 - testing";
php > $encoded = base64_encode(utf8_encode($base));
php > $decoded = utf8_decode(base64_decode($encoded));
php > echo ($decoded === $base) . "\n";
1
于 2013-09-17T05:48:44.990 に答える