Есть ли способ декодировать эту строку?
Фактическая строка: 其他 語言 測試 – тестирование
base64 кодировать при отправке по почте в качестве объекта, как
"=? Изо-2022-JP? В? GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw ==? ="
<?php echo base64_decode('GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw=='); ?>
Это кодировка базы 64, я не мог ее декодировать на фактическую китайскую строку. Поскольку она была закодирована с использованием «iso-2022-jp», я также попытался использовать сайт base64decode.org для декодирования этой строки, но я не мог найти исходную строку, как я могу это сделать?
Использовать 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 ?>
То, что вы ищете, – это кодировка заголовка 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.)
Попробуйте сначала кодировать строку в UTF-8, а затем закодировать ее до базы 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