2015-08-24 3 views
0

Текстовые почты в Gmail выглядит так, что они смешиваются с английским и китайскими иероглифами:Encode/Decode Оригинала почты тело читаемого иностранного (китайский) характер

中中字 smile 

Когда я нажимаю «показать оригинал» в Gmail , тело выглядит следующим образом:

=E4=B8=AD=E4=B8=AD=E5=AD=97 smile 

Как вы можете видеть, английская часть («улыбка») выглядит так же, как с Gmail лицевой панели или оригинальной почте, но китайские иероглифы, казалось, должны быть обработаны.

Вопрос: Как закодировать/декодирующее Marsians в оригинальном теле письма к readables?

Большое спасибо ~

ответ

1

Это hexdecimal представление их значений Юникода (E4B8AD и т.д.)

$string = "=E4=B8=AD=E4=B8=AD=E5=AD=97 smile"; 

$string = preg_replace_callback(
    "/=([a-zA-Z0-9]{2})/", 
    function ($match) { 
     return hex2bin($match[1]); 
    }, 
    $string 
); 

var_dump($string); 

не приведет к string(15) "中中字 smile"

+2

Нет необходимости использовать регулярные выражения для этого. Функция [quoted_printable_decode] (http://us2.php.net/quoted_printable_decode) может выполнять преобразование, а также обрабатывать разрывы строк и т. Д., Как указано в RFC 2045. – legoscia

+0

Должно было знать, что для этого есть встроенная функция php. . :) – WhoIsJohnDoe