六、如何消除郵件亂碼?
郵件亂碼的形成原因很多,主要有以下幾個方面,針對以下幾種形成原因,應該采取不同的亂碼消除方法:
1、收發信雙方的語種不同導致的
收發雙方使用的操作系統的不同,可以造成亂碼。比如發件人使用的是日文的 Windows,而收件人使用的是簡體中文的 Windows,這樣的郵件當然會造成亂碼。對於中文電子郵件,如果收信方所用的操作系統是英文環境、而且沒有外掛中文系統或未切換為中文(如南極星等)編碼方式,也會無法看到中文、只可見亂碼。所有的雙字節字符(如中文簡/繁體的 GB 和 BIG5 碼及日文的 JIS、EUC 和朝鮮文的 KSC碼等)在非本語種操作系統下都會出現亂碼;同樣在中文簡體的 GB 碼環境下,看其他雙字節字符時也只能看到亂碼。
【解決辦法】:安裝多語言支持包或使用多內碼顯示平台(如南極星等),對收到的郵件,根據其使用的語種切換到相應的編碼方式即可消除亂碼。
2、發信服務器不支持8位(非 ASCII 碼格式)傳輸
郵件傳輸機制或郵件編碼的不同,可能造成郵件服務器不支持 8 位(非 ASCII 碼格式)傳輸而形成郵件亂碼。例如直接發送中文或二進制等非 ASCII 碼格式的郵件(如中文雙字節文件、圖片文件 .jpg、可執行文件 .exe 或壓縮文件 .zip 等二進制文件)時,郵件服務器有可能無法處理,便把信件中每個字符的第八位都過濾掉,從而造成郵件信息的失真或損壞,在收到郵件時就是一堆亂碼。
【解決辦法】:只能由發件人解決。當發送 8 位格式的文本文件時,必須事先進行編碼,將文件轉換為 7 位 ASCII 碼或更少位數的格式,然後才能保證文件的正確傳送。收件人收到7位或更少位格式的郵件後,可以再轉換為 8 位的格式,這樣就可避免亂碼。
3、收發端用的 EMAIL 軟件和設置不同
一般 EMAIL 軟件的 "附件" 功能都可以自動對信件先進行編碼,然後送出。這樣只要收信人使用的 EMAIL 軟件(如 Outlook XP 等)能區別信件的編碼方式,即可自動將信件解碼。如果收發件人所用的 EMAIL 軟件默認配置不同、收發件人自己定制的一些選項不同,在收到編碼的信件後,系統就未必能識別出信件所用的編碼方法,自然也無法自動解碼,這樣就會出現亂碼。
【解決辦法】:如果你用 OE 收中文郵件,看到的是一篇亂碼,可以查一下 “查看” - “編碼” 下,是否選了 “繁體中文(Big5)”, “簡體中文(GB2312)” 或是 "萬國碼 Unicode (UTF-8)",選對了就不會有問題。
此外,你也可以用 Winzip+IE 來解碼,方法是:把亂碼郵件的內容,拷貝到剪貼板中,然後將其粘貼到記事本中,存為文本文件(例如 LI.txt),再將其後綴改為 .uue(改為 LI.uue),點擊此文件,會啟動 Winzip,然後啟動 IE,把 Winzip 中的 001.txt 文件拖到 IE 窗口中,就會顯示郵件原來的內容,而不會看到亂碼。
4、Email 軟件不能識別郵件的編碼方法
郵件的編碼方式主要有:Uuencode、Base64 encode、QP-encode、BINHEX 等。如果 Email 軟件不能識別郵件的編碼方法,就會顯示郵件時出現亂碼。因此,你可以根據郵件中的關鍵字符判斷編碼方法,選取合適的解碼軟件進行解碼。
(1)、QpencodeQP編碼
該編碼全稱 “Quoted-Printable Content-Transfer-Encoding”,因為這種格式郵件的內容都是 ASCII 字符集中可以打印的字符,所以名稱中含有 printable。大體格式為: =A1A=B1z=A6n=A1I=A7=DA=A6b=BA=F4=B8=F4=A4W=B1o......=E5==ABH=A5=F3=B0=DD=C3D=B1M=Aea=A1A......
特征:內容通常有很多等號 "=",因此不需要看 "信頭" 也可以判斷是否為 QP 編碼。
解碼辦法:把郵件中類似 A1A=B1z=A6n… 的部分編碼全部復制下來,貼到一個新的純文本文件中,然後在文件頭部加入 Quoted-pintable 格式的文件頭:
Contenet-Type:text/plain;Charset=”Big5”
Content-Transfer-Encoding;Quoted-pintable
然後以 “EML” 為後綴保存文件,用資源管理器雙擊打開文件即可顯示正確的內容。如果還有部分漢字亂碼,可以用 WINZIP 對存盤後的 EML 文件進行解壓,即可看到正確的內容。
(2)MIME/BASE64 encode編碼
該編碼方式將 3 個字節(8 位)用 4 個字節(6 位)表示,由於編碼後的內容是 6 位的,因此可避免第 8 位被截掉,大體格式為:
MIME-Version:1.0
Content-Type:text/plain; charset="us-ascii"
Content-Transfer-Encoding:base64
Status:R SGmhQbF6pm6hSafapmK69Lj0pFexb6q+sXqsT6Skp OWrSKXzs
N3DRLFNrmGhQQ0Kq1+sTqq6vdCx
0LF6tFit07Ddw0ShRw0KDQqtuqX9p2m2RL
F6p9qoz6XOIE1Py3Jvc29mdCuiBJbnRlcm5ldCBN......。
特征:亂碼前一般有如下幾部分 "信頭":Content-Type (內容類型)、charset (字符集) 及 Content-Transfer-Encoding (內容傳輸亂碼方式)。
解碼辦法:用 EMAIL 軟件,選擇編碼中 BASE64 選項就可解碼,解碼後會消除亂碼。
(3)、BINHEX 編碼
這種編碼方式大體格式為:
(This file must be converted with Binhex4.0)SGmhQbF6pm6hSafapmK69Lj0pFexb6qss
Tqq6vdCx
0LF6tFit07Ddw0ShRw0KDQqtuqX9p2m2RLF6p9qoz6XOIE…….
解碼辦法:用 EMAIL 軟件對它解碼;也可在 EMAIL 軟件中保存亂碼郵件,存為後綴為 “.HQX” 格式的文件,然後用 WINZIP 解碼展開。解碼後會消除亂碼。
(4)、UTIF-7/UTIF-8編碼
它們是 UNICODE 的兩種轉換碼。
(5)、Uuencode 編碼
這是 UNIX 環境下使用的編碼方式,目前已經很少用,大體格式為:
begin 644 kk.zip M1G)O;2!I;&EN+F)B3T!C(VEE+FYC='4N961U+G1W(%=E9"!.; W8@(#8@,3(ZM,SDZ,C4@,3DY-@I296-E:79E9#H@9G)O;2!F;&%B;6%I;"YF;&%B+F9U:FET.................。
end
特征:亂碼前面含有 "begin xxx",後面是編碼前的原始文件名(如 kk.zip);接著是已經過編碼的信件內容(如上述的亂碼部分);最後一行為 "end"
解碼辦法:可用 BECKY!EUDORA 等 EMAIL 軟件,選擇編碼中相應的選項就可解碼;也可以在 EMAIL 軟件中保存亂碼郵件,存為後綴為 “.UUE” 格式的文件,然後用 WINZIP 解碼展開,解碼後就會消除亂碼。