2016-03-07 34 views
1

我在使用PHP解碼郵件正文時遇到了問題。 我有2個UTF-8電子郵件,其結構是相同的。 對於其中一個我可以用iconv(「UTF-8」,「Windows-1252」,$ data)解碼身體 對於另一個,這不起作用。 1)我不知道用什麼來代替這個 2)我怎樣才能確定區分這兩種類型的電子郵件動態?PHP IMAP解碼UTF-8郵件正文

stdClass Object 
(
    [type] => 1 
    [encoding] => 0 
    [ifsubtype] => 1 
    [subtype] => MIXED 
    [ifdescription] => 0 
    [ifid] => 0 
    [ifdisposition] => 0 
    [ifdparameters] => 0 
    [ifparameters] => 1 
    [parameters] => Array 
     (
      [0] => stdClass Object 
       (
        [attribute] => BOUNDARY 
        [value] => ----=_Part_8432_30170987.1457360103746 
       ) 
     ) 

    [parts] => Array 
     (
      [0] => stdClass Object 
       (
        [type] => 0 
        [encoding] => 4 
        [ifsubtype] => 1 
        [subtype] => PLAIN 
        [ifdescription] => 0 
        [ifid] => 0 
        [lines] => 50 
        [bytes] => 1811 
        [ifdisposition] => 0 
        [ifdparameters] => 0 
        [ifparameters] => 1 
        [parameters] => Array 
         (
          [0] => stdClass Object 
           (
            [attribute] => CHARSET 
            [value] => UTF-8 
           ) 

         ) 

       ) 



     ) 

) 


stdClass Object 
(
    [type] => 1 
    [encoding] => 0 
    [ifsubtype] => 1 
    [subtype] => MIXED 
    [ifdescription] => 0 
    [ifid] => 0 
    [ifdisposition] => 0 
    [ifdparameters] => 0 
    [ifparameters] => 1 
    [parameters] => Array 
     (
      [0] => stdClass Object 
       (
        [attribute] => BOUNDARY 
        [value] => ----=_Part_1135_19111967.1451925068339 
       ) 

     ) 
    [parts] => Array 
     (
      [0] => stdClass Object 
       (
        [type] => 0 
        [encoding] => 4 
        [ifsubtype] => 1 
        [subtype] => PLAIN 
        [ifdescription] => 0 
        [ifid] => 0 
        [lines] => 27 
        [bytes] => 490 
        [ifdisposition] => 0 
        [ifdparameters] => 0 
        [ifparameters] => 1 
        [parameters] => Array 
         (
          [0] => stdClass Object 
           (
            [attribute] => CHARSET 
            [value] => UTF-8 
           ) 
         ) 
       ) 
     ) 
) 

當我使用imap_mime_header_decode兩個數據對象,我得到這樣的:

Array 
(
    [0] => stdClass Object 
     (
      [charset] => default 
      [text] => 
... 
) 

由於提前, Stiti

+0

您是否嘗試從郵件頭獲取字符集並將其轉換爲UTF8(而不是假定Windows-1252)? –

+0

你好,電子郵件字符集已經是UTF-8,但我想轉換它或至少打印正確的口音。 – user2269756

回答

1

問題解決了: 我用:

iconv("UTF-8", "Windows-1252//TRANSLIT//IGNORE", $data) 

而不是:

iconv("UTF-8", "Windows-1252", $data) 

現在它工作的很好。