Outlook 亂碼問題


話說在論壇常常看到有人問到收到郵件亂碼,這個亂碼問題要配圖檔比較好說明。
說明之前先說,因為搞太多了,所以我自己有很多寄信收信的小工具,也可以當成是郵件軟體,以一個郵件軟體開發者的角度來說這件事,不要當成這是經驗談或偏方,有時在論壇上就有人要用經驗跟我揮,乾脆叫對方貼出信頭還比較快。
電子郵件從寄件者電腦郵件軟體輸出成專用的 MIME 郵件後,一路使用 SMTP 遞送,經過寄件伺服器 [> 叢集可能還會有對外主站] > 收件伺服器 [> 叢集可能還會有對內分站] 保留在收件伺服器上。
收件者再以郵件軟體使用 POP3 到收件伺服器上下傳接收。
註:中括號表示可有可無
每經過一台 SMTP 轉送,包含收件伺服器分站,就會在信件最上方加上經過伺服器的記錄,所以若要追蹤各伺服器的時間、路徑,就可以從信頭來看,越上方的越後經過,越靠近收信者。
當然倒回推的時候,若是中間不是經過大型可信賴的郵件伺服器,可能會被偽造,比如說有些大企業內部可能有多個 Mail Server ,可能路徑是:
部門 Mail Server > 公司 Mail Server > 轉信站 (ISP 業者) …
而一般使用者可能直接透過 ISP 業者寄出,所以一般使用者若知道某些大企業的信頭 (Mail Header) 找出路徑時,就可以仿造透過程式方式送出不存在的 Mail 記錄,佯裝是部門 Mail Server 寄出。
所以信頭很多不可靠,但是反過來說,一封郵件能不能正確的解讀,就要看信頭。
下面這張圖是一封信頭的結構圖,這是屬於 MIME 格式,詳情可參考 RFC1521 ,這種格式可以內崁,也就是一封郵件裡面可能還有多封郵件或檔案,比如說附加檔就是以 MIME 格式崁入在信件的 MIME 格式中。
而一封郵件是否能正確解碼,就看郵件是否有崁入編碼。
早期郵件通常是本國寄來寄去,但隨著國際化,跨國郵件越來越多,所以編碼的問題也越加重要,但這類軟體多半是英語系國家開發,所以包含 Outlook Express / Windows Live Mail / Outlook 的預設值,都是不寫入國際編碼資訊,而收信時若信頭沒有標記國際編碼時,就會依據控制台地區語言來假定這封郵件的編碼,當寄件者使用多國語言時,就容易發生亂碼。
最簡單的方法,就是請寄件者在 Outlook 外寄郵件編碼中,設定為 utf8 ,這邊不是指單封郵件的編碼,而是整套軟體的設定。整套軟體的設定會套用在整封郵件上,信件的編碼只會套用在 Mail Body 上,並不會影響到 Mail Header ,也就是說整封郵件的 MIME 編碼方式可以與內崁的附件採用不同的編碼方式,比如說你內文要用簡中,但你不需要把 Outlook 的設定變更為簡中,只需要把該封郵件的編碼變更為簡中即可。
特別的狀況:
假設簡中寄件者沒設定外寄的郵件編碼,會以 GB 編碼寄出,這個編碼相容 ANSI ,繁中收件者用 ANSI 相容的 Big5 就會解出一堆亂碼,但若使用者有安裝 Unicode 補完計畫,就會因為 ANSI 轉 big5 映射到 Unicode 後,顯示出部分正確的編碼,不過要注意,這只是剛剛好,不是通解。
正確的方法簡中寄件者發出郵件經過 Unicode 適用於網路傳輸的 utf8 邊碼寄送,到了使用者電腦就會用 utf8 解整封郵件,再依據內崁的內容顯示出簡體中文。
注意的部分:
Win9x(95/98/SE/Me) 是 ANSI Windows ,WinNT(2k/XP/2003/Vista/2008/7) 是 Unicode Windows ,Outlook 2002 以前是 ANSI Windows (所以才能安裝在 WinMe 以前) ,Outlook 2003 以後是 Unicode Windows ,只有 Outlook 2003 與 Windows 2000 以後才是純 Unicode 環境,能把亂碼問題減少到最少,此外若碰到掉字,可能是對方使用到 Unicode 3.1 以後的字元,Win2k/XP/2003 是 Unicode 2.0 ,WinVista/2008/7 是 Unicode 5.0 ,若使用到 Unicode 5.0 的字元,在舊版的環境下會無法顯示,哪些是 Unicode 3.1/5.0 的字元呢?先前這篇有,新注音輸入法中不是黑色的都是:
設定外寄郵件編碼不等於單封郵件的編碼,為了方便識別起見,將參考圖片補充如下:
Outlook 2003
Outlook 2007
Outlook 2010
Outlook Express 6.0
Windows Live Mail
Categories: Office | 21 則迴響

文章分頁導航

21 thoughts on “Outlook 亂碼問題

  1. 子璉

    1. 亂碼通常是上面講的,沒有設定外寄郵件編碼,可從信頭來判讀是否有設定。*.eml 用記事本打開,前面到空白行之前叫做 Mail Header (信頭) ,後面叫做 Mail Body (郵件本文) ,配合 MIME 格式,有時也稱 Message Header / Message Body 。
    2. 你的狀況可能是發信被中斷導致附加檔不完整,或是編碼錯誤導致信件被截斷,MIS 發信時副本給自己,檢查 Mail Server 上 Log 有無 Timeout (中斷) 、檢查郵件原始檔最後是否正常結束 (截斷)

  2. cathy

    感謝您的解說與分享,我被這個問題困擾很久了,但對於您的說明尚有不解的地方,我遇到的情形有二種:1. 大陸地區mail來的主旨都是亂碼。2. 收到大陸地區來的郵件附加excel檔,在我的電腦中打開是正常的,但經由我的電腦再轉寄給別人後,excel內的文字及表格全變成一堆英文字母了。請問以上二種情形要如何設定呢?

    Liked by 1 person

  3. wkevinst

    個人覺得是 microsoft 的問題,即便雙方都用 outlook 2007 也都設 utf8
    結果還是常常變亂碼,在 office2003 以前版本都沒有這現象,自從換了 2007~ 以後版本
    outlook 出現亂碼就變成家常便飯。

    • eMail 的標準是依據 RFC 文件的規範,我只能說這樣的想像力會讓人誤會沒讀書…
      要推論一個傷害性的定論時,要有依據,而不是以為是。

  4. wkevinst

    因為我實在無法解釋兩邊都為 outlook 2007 且都設為 utf8或者兩方都為 big5 時寄信或回信對方收到的居然都是亂碼,還要手動切換編碼。這對 user 來講是無法解釋的。
    事實上網路上並不只我覺得 outlook 2007 以後版本亂碼次數變多,那這一堆人是否都沒讀書勒??? 事實上 outlook 2007 以後版本出現亂碼機率比以前版本來的高是不爭的事實。

  5. V.C

    都設定了, 還是解決不了, 實在令人頭疼!
    目前遇到是ipad寄來的信會有這問題, 但mac寄來卻又不會, 整個不知所已!

  6. 上面說過,這是寄信端問題。
    iPad 是否有可設定的部分,請洽蘋果客服部門,或是你送我一台讓我試看看。

  7. jmc

    你好 已照你所言 雙方都已更改為utf-8 當下也測試 ok
    但隔天又恢復亂碼(英文及數字)
    謝謝

  8. 請參考前面的說明,檢查信頭。
    收件端是否設定不受影響,收件端會依據信頭解碼,會亂碼就是沒正確設定,且寄件端與收件端預設語系不同造成。

  9. Luke

    您好,我使用Outlook 2010,
    一封主旨正常顯示中文的mail,轉寄給自己和他人,主旨都變成亂碼。又新增一封信,主旨打中文,寄給自己,主旨變成亂碼,但兩者內容都正常顯示。
    請問大概是什麼原因?

  10. 主旨亂碼依據上面說明,檢查內嵌編碼

  11. Anderson Hsu

    您好:
    如果郵件的內容中,亂碼是在回信的過程中來產生 (之前的顯示正常,這幾天顯示變亂碼),是否有辦法解讀這段亂碼的內容呢?謝謝 (https://social.msdn.microsoft.com/Forums/zh-TW/644eaa8b-dbc1-4ab9-b419-490de6b3dfd5)

    • 論壇內的討論請在論壇內解決,在別人部落格貼是很不禮貌的。
      你論壇文中並沒有提到原先正常,所以會對相關參與者產生誤導,所以可能衍生完全錯誤的討論方向。
      這幾天需要明確定義,如果是 Windows Update 之後,可以先移除本月這個更新:KB3097877
      目前有一些說法會影響到 Office 或 Win7 開機。
      若是更新前,可以試著用 scanpst.exe 修復,另外檢查是否安全性中設置純文字郵件,若為純文字郵件且沒有多個 MIME 部分, Mail Body 內只有 HTML 內容,有可能出現此問題。
      後續不在部落格回覆。

      • Anderson Hsu

        了解,此部分將修正 (POST在部落格的部分) 。感謝

  12. 您好 目前遇到以下問題
    於 WINXP 使用OUTLOOK 2003 可以正常收信
    於WIN7 使用OUTLOOK 2003 SP3 有部分收信異常
    同一寄件者所寄送之MAIL,有一封可以正常開啟
    另一封則是純文字(原始碼)的方式開啟
    已確認寄信者使用UTF-8編碼寄信
    於WEBMAIL可正常收信

    請問還有哪個地方需要修改,才能讓OUTLOOK2003
    收到HTML的MAIL而非純文字嗎
    附註:已有設定已HTML方式收信了

    謝謝

  13. Outlook 基於安全考量,允許使用者設定純文字讀信,請在收信端檢查。
    此問題為 Outlook client 端操作問題,並非亂碼問題,請在微軟論壇提問,不要在個人網誌亂入不相關的問題。

  14. 我的Outlook也是有碰到寄出的信客戶變亂碼的問題, 但把[喜好的外寄郵件編碼] 選擇 [Unicode (UTF-8)]並沒有解決亂碼, 後來發現還要取消勾選[自動選取外寄郵件的編碼]客戶收到才不會變亂碼 , 剛好跟版主這的截圖中是要勾選[自動選取外寄郵件的編碼] 相反, 不知道為什麼在[自動選取外寄郵件的編碼]這個選項剛好是相反的?

  15. 引用通告: [Outlook] iOS 寄來的信件亂碼 | 鄭子璉

發表留言

在WordPress.com寫網誌.