郵件編碼介紹及亂碼的解決

E-mail一般在傳送過程中都要對文件進行編碼。這是因爲E-mail只能傳送ASCII碼格式的文字信息。ASCII碼爲7位代碼,非ASCII格式的文件在傳送中必須經過編碼工具編成相應的A SCII碼進行傳輸,接收端在收到後再根據編碼規則進行解碼。若非如此就會在傳輸過程中出現編碼截位的問題,導致收信方出現亂碼。特別是中文內碼的文字,屬於8 位代碼,並非標準的ASCII碼形式,由於國內通行的大部分郵件服務器都能夠處理GB內碼文件,所以可以直接傳送文件而不需要編碼,但如果要將中文郵件發到國外或在不支持8 位(非標準ASCII碼格式)的某些郵件主機上傳輸,就會產生亂碼。具體的說就是在直接發送中文或非ASCII碼的郵件時郵件主機無法處理,會把文件中每個字符的第八位都濾掉(截去第八位)從而使一些信息和原始信息截然不同,或郵件完全損壞成爲亂碼無法閱讀。這也是目前造成郵件亂碼的主要原因之一。如果我們對郵件進行七位編碼然後進行傳輸解碼,就能解決截位亂碼現象。

E-mail中一般採用UU、MIME、BINHEX三種編碼標準,當郵件出現亂碼時,很多是由於E-mail編碼不對而造成的,由於每種編碼其格式都有其各自特徵,這就給了我們一個判別的標誌。我們可以根據這些特徵進行編碼判斷並採取相應的方法來解決。

一、UUENCODE編碼判斷及解決。

UUENCODE內部所用算法爲Base64,其格式爲:

begin 644 gx.zip Mig)0;....
...
end

其格式特徵爲在亂碼之前會有“begin xxx”後緊跟被編碼的原始文件名稱,然後是編碼信件內容,在最後一行爲“end”。

根據這些特徵我們判斷出編碼方式爲UUENCODE方式,就可以使用一些相應DECODE軟件來解碼。具體方法有:

(1)將Uuencode“亂碼”郵件轉寄到自己的郵箱中,再使用能夠支持UU解碼的電子郵件接收程序(如Eudora、OutLook Express等)來接收該郵件。

(2)通過剪貼板將Uuencode“亂碼”存爲文本文件,改文件名後綴爲UUE,然後使用Winzip解碼。

二、MIME方式編碼判斷及亂碼解決方法

(一)Base64 encode編碼判斷

Base64大體格式爲:

MIME-Version:1.0
Content-type:text/plain;Charset="us-ascii"
Content-transfer-encoding;base64
....

在亂碼前面一般有以下幾部分“信頭”:Content - type (內容及類型),Charset(字符集)及Content-Transfer-encoding(內容傳輸編碼方式),根據以上信息非常好判斷。解決方法有:

(1)將Base64 encode“亂碼”郵件存成一個文本文件,改文件名後綴爲.UUE,然後使用Winzip解碼。

(2)將Base64 encode“亂碼”郵件存成一個文件,將文件後綴改爲.EML,由OutLook Express打開,就可以自動解碼。

(二)QP編碼判斷

QP編碼大體格式如下:
=A1A=B1Z=A6N=A1I=AT=DA
....

採用QP編碼的信件也很容易判斷,只要亂碼內容有很多符號“=”就可判斷爲QP編碼。QP亂碼解決方法有:

(1)將QP-encode“亂碼”郵件轉寄到自己的郵箱中,然後用支持QP解碼的電子郵件接收程序(如Netscape mail、Eudora、OutLookExpress、Becky等)來接收該郵件。

(2)使用Winzip對Quoted-Printable解碼。必須注意:

a.在郵件信頭中檢查、添加這樣兩行:Mime-Version:1.0 Content-Transfer-Encoding: quoted-printable ;

b.信頭中間不要空行,信頭和信體之間要有一個空行。這樣形成的文件,改後綴名爲UUE,即可雙擊啓動Winzip得到解碼。

三、其它原因造成的郵件亂碼:

(一)HZ中文亂碼

由於網友們可能使用不同的電子郵件收發軟件,因此,來自各個網友的郵件內容可能包含着看不懂的亂碼,例如,有時會看到“囊饉跡Z ”這樣奇怪的文字內容,實際上這是一串“簡體中文HZ”編碼。如果使用Outlook Express發送郵件,選用HZ編碼,而郵件的接收者使用Eudora來閱讀郵件,看到的就是這種亂碼。正確的方法是,在撰寫郵件窗口中,選擇“格式”菜單下的“語言”命令,並選中“簡體中文( GB2312)”項,然後發送郵件。這時,如果你使用OutlookExpress,可以打開“查看”菜單點擊“語言”選項中的“簡體中文(GB2312)”項,或者點擊工具欄上“語言”後面的向下箭頭,選擇“簡體中文( GB2312)”功能項,屏幕出現一個對話框,單擊“是”按鈕,所有郵件主題中含有指定字符集的郵件應用新的字符集。如果你使用Eudora之類的軟件,可以用“南極星”之類的軟件自動轉換不同的漢字編碼。如果還看不到的話,可將這些編碼文本,拷貝到一個文本編輯器中查看。

(二)“半個漢字”亂碼

漢字的另一個問題是所謂的“半個漢字”亂碼。如果看到下面這串亂碼,你一定看不懂它的意思: “把砑⒂萌砑
這是由於很多英文編輯軟件以字符爲單位來處理文本,漢字被刪除一半後,剩餘的部分會和相鄰的漢字重新組合,使得文本面目全非。因此,除了在輸入、刪除的時候注意這種問題外,還要注意不要在英文字處理軟件中輕易使用“字符替換”功能,否則系統往往會把一個漢字的後一個字符和相鄰漢字的前一個字符當成一個漢字處理。

對於“半個漢字”亂碼,只要將“亂碼”郵件存成一個文本文件,然後使用以字符爲單位的編輯軟件,將“亂碼”行的首字符刪除,後面的部分就會和相鄰的“亂碼”重新組合成可識別的漢字。

如果上述方法不能奏效,那麼只好告訴對方正確的發送方式,請對方重新發一份郵件給你了。

講了這麼多,相信大家對E-MAIL的編碼有了一定了解,對於一般的編碼亂碼也有了一定的判別能力了。但E-MAIL亂碼不僅僅是由於編碼不同所造成的,還可能有其它的原因,比如:

1.該郵件採用了其它少見的編碼方法,如Binhex或XXencode編碼等。如果亂碼前面有“信頭”信息(一般顯示了該郵件所用的編碼方式),即可用X ferp111或其它“智能型”Windows程序將其解碼。

2.是否在中文環境內。如果你所用的操作系統是英文環境,而你又沒有外掛中文系統(如中文之星)或未切換爲中文編碼方式,則你自然看不到中文(如R ICHWIN四通利方或南極星等),看到的只能是亂碼。注意,雙字節字符有中文簡/繁體的GB和BIG5碼及日文的JIS、EUC和朝鮮文的KSC碼等,在G B碼環境下看其他雙字節字符時也只能看到亂碼。在這些情況下,須用轉碼工具如Richwin、南極星等進行轉換。

3.郵件未經過編碼造成第8位字節濾掉成爲無法還原的死亂碼文檔。

四、爲了儘量避免出現亂碼問題,下面給出幾點建議:

1.利用“附件”功能發送文件。

2.無法以附件方式發送文件時,則必須在正文中發送中文或二進制文件。方法是在你所使用的郵件系統中,選擇其首選項或選項配置中的“Q uoted Printalbe”或“MIMEencoding”項。

3.發送重要信息時先發測試信。  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章