簡單介紹一下這四種編碼方式:
ANSI:系統(tǒng)預(yù)設(shè)的標(biāo)準(zhǔn)文字儲(chǔ)存格式。ANSI是American National Standards Institute的縮寫。它成立于1918年,是一個(gè)自愿性的組織,擁有超過1300個(gè)會(huì)員,包括所有大型的電腦公司。ANSI專為電腦工業(yè)建立標(biāo)準(zhǔn),它是世界上相當(dāng)重要的標(biāo)準(zhǔn)。
Unicode:世界上所有主要指令文件的聯(lián)集,包括商業(yè)和個(gè)人電腦所使用的公用字集。當(dāng)采用Unicode格式儲(chǔ)存文件時(shí),可使用Unicode控制字符輔助說明語言的文字覆蓋范圍,如阿拉伯語、希伯來語。用戶在“記事本”中輸入含有Unicode字符的文字并儲(chǔ)存文件時(shí),系統(tǒng)會(huì)提示你必須選取“另存為”中的Unicode編碼,這些字符才不會(huì)被遺失。需要提醒大家的是,部分Windows 2000字型無法顯示所有的Unicode字符。如果發(fā)現(xiàn)文件中缺少了某些字符,只需將其變更為其它字型即可。
Unicode big endian:在Big-endian處理器(如蘋果Macintosh電腦)上建立的Unicode文件中的文字位元組(存放單位)排列順序,與在Intel處理器上建立的文件的文字位元組排列順序相反。最重要的位元組擁有最低的地址,且會(huì)先儲(chǔ)存文字中較大的一端。為使這類電腦的用戶能夠存取你的文件,可選擇Unicode big-endian格式。
UTF-8:UTF意為通用字集轉(zhuǎn)換格式(Universal Character Set Transformation
Format),UTF-8是Unicode的8位元格式。如果使用只能在同類位元組內(nèi)支持8個(gè)位元的重要資料一類的舊式傳輸媒體,可選擇UTF-8格式。
能否舉一些例子,而且偶想知道電子郵件里面的編碼是如何的?
郵件編碼介紹及亂碼的解決
E-mail一般在傳送過程中都要對(duì)文件進(jìn)行編碼。這是因?yàn)镋-mail只能傳送ASCII碼格式的文字信息。ASCII碼為7位代碼,非ASCII格式的文件在傳送中必須經(jīng)過編碼工具編成相應(yīng)的A SCII碼進(jìn)行傳輸,接收端在收到后再根據(jù)編碼規(guī)則進(jìn)行解碼。若非如此就會(huì)在傳輸過程中出現(xiàn)編碼截位的問題,導(dǎo)致收信方出現(xiàn)亂碼。特別是中文內(nèi)碼的文字,屬于8 位代碼,并非標(biāo)準(zhǔn)的ASCII碼形式,由于國內(nèi)通行的大部分郵件服務(wù)器都能夠處理GB內(nèi)碼文件,所以可以直接傳送文件而不需要編碼,但如果要將中文郵件發(fā)到國外或在不支持8 位(非標(biāo)準(zhǔn)ASCII碼格式)的某些郵件主機(jī)上傳輸,就會(huì)產(chǎn)生亂碼。具體的說就是在直接發(fā)送中文或非ASCII碼的郵件時(shí)郵件主機(jī)無法處理,會(huì)把文件中每個(gè)字符的第八位都濾掉(截去第八位)從而使一些信息和原始信息截然不同,或郵件完全損壞成為亂碼無法閱讀。這也是目前造成郵件亂碼的主要原因之一。如果我們對(duì)郵件進(jìn)行七位編碼然后進(jìn)行傳輸解碼,就能解決截位亂碼現(xiàn)象。
E-mail中一般采用UU、MIME、BINHEX三種編碼標(biāo)準(zhǔn),當(dāng)郵件出現(xiàn)亂碼時(shí),很多是由于E-mail編碼不對(duì)而造成的,由于每種編碼其格式都有其各自特征,這就給了我們一個(gè)判別的標(biāo)志。我們可以根據(jù)這些特征進(jìn)行編碼判斷并采取相應(yīng)的方法來解決。
一、UUENCODE編碼判斷及解決。
UUENCODE內(nèi)部所用算法為Base64,其格式為:
begin 644 gx.zip Mig)0;....
...
end
其格式特征為在亂碼之前會(huì)有“begin xxx”后緊跟被編碼的原始文件名稱,然后是編碼信件內(nèi)容,在最后一行為“end”。
根據(jù)這些特征我們判斷出編碼方式為UUENCODE方式,就可以使用一些相應(yīng)DECODE軟件來解碼。具體方法有:
(1)將Uuencode“亂碼”郵件轉(zhuǎn)寄到自己的郵箱中,再使用能夠支持UU解碼的電子郵件接收程序(如Eudora、OutLook Express等)來接收該郵件。
?。?)通過剪貼板將Uuencode“亂碼”存為文本文件,改文件名后綴為UUE,然后使用Winzip解碼。
二、MIME方式編碼判斷及亂碼解決方法
?。ㄒ唬〣ase64 encode編碼判斷
Base64大體格式為:
MIME-Version:1.0
Content-type:text/plain;Charset="us-ascii"
Content-transfer-encoding;base64
....
在亂碼前面一般有以下幾部分“信頭”:Content - type (內(nèi)容及類型),Charset(字符集)及Content-Transfer-encoding(內(nèi)容傳輸編碼方式),根據(jù)以上信息非常好判斷。解決方法有:
?。?)將Base64 encode“亂碼”郵件存成一個(gè)文本文件,改文件名后綴為.UUE,然后使用Winzip解碼。
?。?)將Base64 encode“亂碼”郵件存成一個(gè)文件,將文件后綴改為.EML,由OutLook Express打開,就可以自動(dòng)解碼。
(二)QP編碼判斷
QP編碼大體格式如下:
=A1A=B1Z=A6N=A1I=AT=DA
....
采用QP編碼的信件也很容易判斷,只要亂碼內(nèi)容有很多符號(hào)“=”就可判斷為QP編碼。QP亂碼解決方法有:
(1)將QP-encode“亂碼”郵件轉(zhuǎn)寄到自己的郵箱中,然后用支持QP解碼的電子郵件接收程序(如Netscape mail、Eudora、OutLookExpress、Becky等)來接收該郵件。
?。?)使用Winzip對(duì)Quoted-Printable解碼。必須注意:
a.在郵件信頭中檢查、添加這樣兩行:Mime-Version:1.0 Content-Transfer-Encoding: quoted-printable ;
b.信頭中間不要空行,信頭和信體之間要有一個(gè)空行。這樣形成的文件,改后綴名為UUE,即可雙擊啟動(dòng)Winzip得到解碼。
三、其它原因造成的郵件亂碼:
?。ㄒ唬〩Z中文亂碼
由于網(wǎng)友們可能使用不同的電子郵件收發(fā)軟件,因此,來自各個(gè)網(wǎng)友的郵件內(nèi)容可能包含著看不懂的亂碼,例如,有時(shí)會(huì)看到“囊饉跡Z ”這樣奇怪的文字內(nèi)容,實(shí)際上這是一串“簡體中文HZ”編碼。如果使用Outlook Express發(fā)送郵件,選用HZ編碼,而郵件的接收者使用Eudora來閱讀郵件,看到的就是這種亂碼。正確的方法是,在撰寫郵件窗口中,選擇“格式”菜單下的“語言”命令,并選中“簡體中文( GB2312)”項(xiàng),然后發(fā)送郵件。這時(shí),如果你使用OutlookExpress,可以打開“查看”菜單點(diǎn)擊“語言”選項(xiàng)中的“簡體中文(GB2312)”項(xiàng),或者點(diǎn)擊工具欄上“語言”后面的向下箭頭,選擇“簡體中文( GB2312)”功能項(xiàng),屏幕出現(xiàn)一個(gè)對(duì)話框,單擊“是”按鈕,所有郵件主題中含有指定字符集的郵件應(yīng)用新的字符集。如果你使用Eudora之類的軟件,可以用“南極星”之類的軟件自動(dòng)轉(zhuǎn)換不同的漢字編碼。如果還看不到的話,可將這些編碼文本,拷貝到一個(gè)文本編輯器中查看。
?。ǘ鞍雮€(gè)漢字”亂碼
漢字的另一個(gè)問題是所謂的“半個(gè)漢字”亂碼。如果看到下面這串亂碼,你一定看不懂它的意思: “把砑⒂萌砑?、买软寄好伴侣”?”
這是由于很多英文編輯軟件以字符為單位來處理文本,漢字被刪除一半后,剩余的部分會(huì)和相鄰的漢字重新組合,使得文本面目全非。因此,除了在輸入、刪除的時(shí)候注意這種問題外,還要注意不要在英文字處理軟件中輕易使用“字符替換”功能,否則系統(tǒng)往往會(huì)把一個(gè)漢字的后一個(gè)字符和相鄰漢字的前一個(gè)字符當(dāng)成一個(gè)漢字處理。
對(duì)于“半個(gè)漢字”亂碼,只要將“亂碼”郵件存成一個(gè)文本文件,然后使用以字符為單位的編輯軟件,將“亂碼”行的首字符刪除,后面的部分就會(huì)和相鄰的“亂碼”重新組合成可識(shí)別的漢字。
如果上述方法不能奏效,那么只好告訴對(duì)方正確的發(fā)送方式,請(qǐng)對(duì)方重新發(fā)一份郵件給你了。
講了這么多,相信大家對(duì)E-MAIL的編碼有了一定了解,對(duì)于一般的編碼亂碼也有了一定的判別能力了。但E-MAIL亂碼不僅僅是由于編碼不同所造成的,還可能有其它的原因,比如:
1.該郵件采用了其它少見的編碼方法,如Binhex或XXencode編碼等。如果亂碼前面有“信頭”信息(一般顯示了該郵件所用的編碼方式),即可用X ferp111或其它“智能型”Windows程序?qū)⑵浣獯a。
2.是否在中文環(huán)境內(nèi)。如果你所用的操作系統(tǒng)是英文環(huán)境,而你又沒有外掛中文系統(tǒng)(如中文之星)或未切換為中文編碼方式,則你自然看不到中文(如R ICHWIN四通利方或南極星等),看到的只能是亂碼。注意,雙字節(jié)字符有中文簡/繁體的GB和BIG5碼及日文的JIS、EUC和朝鮮文的KSC碼等,在G B碼環(huán)境下看其他雙字節(jié)字符時(shí)也只能看到亂碼。在這些情況下,須用轉(zhuǎn)碼工具如Richwin、南極星等進(jìn)行轉(zhuǎn)換。
3.郵件未經(jīng)過編碼造成第8位字節(jié)濾掉成為無法還原的死亂碼文檔。
四、為了盡量避免出現(xiàn)亂碼問題,下面給出幾點(diǎn)建議:
1.利用“附件”功能發(fā)送文件。
2.無法以附件方式發(fā)送文件時(shí),則必須在正文中發(fā)送中文或二進(jìn)制文件。方法是在你所使用的郵件系統(tǒng)中,選擇其首選項(xiàng)或選項(xiàng)配置中的“Q uoted Printalbe”或“MIMEencoding”項(xiàng)。
3.發(fā)送重要信息時(shí)先發(fā)測試信。
該文章在 2012/1/13 0:05:46 編輯過