簡單介紹一下這四種編碼方式:
ANSI:系統預設的標準文字儲存格式。ANSI是American National Standards Institute的縮寫。它成立于1918年,是一個自愿性的組織,擁有超過1300個會員,包括所有大型的電腦公司。ANSI專為電腦工業建立標準,它是世界上相當重要的標準。
Unicode:世界上所有主要指令文件的聯集,包括商業和個人電腦所使用的公用字集。當采用Unicode格式儲存文件時,可使用Unicode控制字符輔助說明語言的文字覆蓋范圍,如阿拉伯語、希伯來語。用戶在“記事本”中輸入含有Unicode字符的文字并儲存文件時,系統會提示你必須選取“另存為”中的Unicode編碼,這些字符才不會被遺失。需要提醒大家的是,部分Windows 2000字型無法顯示所有的Unicode字符。如果發現文件中缺少了某些字符,只需將其變更為其它字型即可。
Unicode big endian:在Big-endian處理器(如蘋果Macintosh電腦)上建立的Unicode文件中的文字位元組(存放單位)排列順序,與在Intel處理器上建立的文件的文字位元組排列順序相反。最重要的位元組擁有最低的地址,且會先儲存文字中較大的一端。為使這類電腦的用戶能夠存取你的文件,可選擇Unicode big-endian格式。
UTF-8:UTF意為通用字集轉換格式(Universal Character Set Transformation
Format),UTF-8是Unicode的8位元格式。如果使用只能在同類位元組內支持8個位元的重要資料一類的舊式傳輸媒體,可選擇UTF-8格式。
能否舉一些例子,而且偶想知道電子郵件里面的編碼是如何的?
郵件編碼介紹及亂碼的解決
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等)來接收該郵件。
?。?)通過剪貼板將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(內容傳輸編碼方式),根據以上信息非常好判斷。解決方法有:
?。?)將Base64 encode“亂碼”郵件存成一個文本文件,改文件名后綴為.UUE,然后使用Winzip解碼。
(2)將Base64 encode“亂碼”郵件存成一個文件,將文件后綴改為.EML,由OutLook Express打開,就可以自動解碼。
?。ǘ㏎P編碼判斷
QP編碼大體格式如下:
=A1A=B1Z=A6N=A1I=AT=DA
....
采用QP編碼的信件也很容易判斷,只要亂碼內容有很多符號“=”就可判斷為QP編碼。QP亂碼解決方法有:
(1)將QP-encode“亂碼”郵件轉寄到自己的郵箱中,然后用支持QP解碼的電子郵件接收程序(如Netscape mail、Eudora、OutLookExpress、Becky等)來接收該郵件。
?。?)使用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.發送重要信息時先發測試信。
該文章在 2012/1/13 0:05:46 編輯過