PHP декодировать GB2312 - PullRequest
       41

PHP декодировать GB2312

0 голосов
/ 30 декабря 2010

Я работаю над сценарием электронной почты IMAP, и у меня есть несколько строк, закодированных в GB2312 (я предполагаю, что это китайская кодировка), выглядит так =?GB2312?B?foobarbazetc

Как мне начать работать с этой строкой? Я проверил mb_list_encodings(), а этого нет в списке.

Ответы [ 2 ]

6 голосов
/ 30 декабря 2010

Если у вас есть данные, декодированные в base64, используйте mbstring или iconv.Если у вас есть необработанный заголовок, то mbstring.

<?php
$t = "\xc4\xe3\xba\xc3\n";
echo iconv('GB2312', 'UTF-8', $t);
echo mb_convert_encoding($t, 'UTF-8', 'GB2312');

mb_internal_encoding('UTF-8');
echo mb_decode_mimeheader("=?gb2312?b?xOO6ww==?=");
?>
3 голосов
/ 30 декабря 2010

Игнасио решил суть проблемы с mb_decode_mimeheader(), но для дальнейшего использования эти ссылки также полезны:

Конкретная строка заголовка, с которой я работал:

$subject = "=?GB2312?B?tPC4tDogUXVvdGF0aW9uIFBJSSBwcm9kdWN0cyA=?= =?GB2312?B?Rk9CIFNoYW5naGFpIG9yIE5pbmdibyBwb3J0?="

Для этого требовался заголовок страницы

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

и PHP

mb_internal_encoding('utf-8');
echo mb_decode_mimeheader($subject)."<br />";

для вывода

主题: Quotation PII products FOB Shanghai or Ningbo port
...