如何解決亂碼問題

更新: 2001-04-19 11:24:00 AM   標籤:tags: 亂碼

(http://www.epochtimes.com)
【大紀元4月20日訊】 隨著Internet的普及,在网上通過e-mail傳遞信息逐漸成為現代人生活的一部分,甚至不久還會成為一种生活的必需內容。但我們在接收電子郵件的時候,不時會發現接收的郵件是些怪模怪樣的亂碼,根本無法閱讀。當遇到這种情況時,我們可以針對郵件亂碼的現象分析它的种類,并利用手工的方法來破解。但是這种方法不僅繁而且難,恐怕有相當一部分朋友不知如何下手,即使有個一知半解的,也會面對眾多的手工解決方法而不知如何選擇。在這里筆者給大家提供一套破解郵件亂碼的通用流程,至于是不是經典,那當然得由大家說了算啊!

當你收到一封亂碼郵件時,第一步必須要做的是根据亂碼的特征判斷它到底屬于哪种編碼(通常有UU、MIME和BINHEX三种編碼,而MIME又可細分為好几种),如果能判斷出是哪种編碼,最簡單的方法當然是將亂碼郵件剪貼下來,利用現成的亂碼郵件解碼軟件(如亂碼察看器或郵件解碼器,在“華軍軟件園”能下載到)來解碼閱讀或利用中文之星、Richwin、南極星這樣的中文平台轉換內碼。但如果根据郵件的內容你一時判別不出是哪种編碼,或者你沒有任何現成的解碼工具軟件,則你可以如此這般地一步一步地做下去(以Outlook Express 5為例)。

更改OE5設置
啟動Outlook Express,單擊“工具”/“選項”命令,在出現的對話窗中單擊“閱讀”標簽,再單擊“字體”按鈕,選擇“簡體中文(GB2312)”。接下來將它設置為默認值,單擊“國際設置”按鈕,選中“為接收的所有的郵件使用默認的編碼”,确定后退出。如此設置后,當你再打開郵件閱讀時,通常就不會再出現亂碼了。

編碼選項查看
如果第一步沒能奏效,你可以在Outlook Express中選定亂碼郵件,然后單擊“查看”/“編碼”/“簡體中文(GB2312)”或“其他”/“簡體中文(HZ)”,看看郵件內容是不是能破解。

轉寄郵件后再收
在第二步還不能奏效的情況下你可以將此郵件轉寄到你的另一個郵箱中,然后再用Outlook Express接收,有時即可順利解碼。當然,也可以試著用不同的電子郵件軟件接收此郵件,看看是否能消除亂碼現象,因為不同的電子郵件軟件對編碼的兼容能力還是有所不同的。

改名為.net后重解
如果仍然顯示為亂碼,你可以將亂碼郵件存為一個.txt的文本文件(如果是通過WEB頁收取的郵件,就將信體剪貼下來存為一個.txt的文本文件),并改其后綴名為.eml,由Outlook Express來打開,這樣一般就可以自動解碼了。

添加信頭后重讀
如果還不行,你可以接著在上面那個.eml文件的最前面添加如下信頭:
   Mime-Version: 1.0
   Content-Type: text/plain;
   charset="gb2312"
   Content-Transfer-Encoding: base64
特別要注意的是信頭中間不要空行,信頭和信體之間卻要留有空行(即在“Content-Transfer-Encoding: base64”下要留一空行)。另外,如果不是Base64亂碼,你須判別它們是不是QP亂碼或UTF-7、UTF-8亂碼或HZ亂碼,并分別將base64替換成quoted-printable、7bit、7bit、quoted-printable(后三种亂碼還要將gb2312替換成utf-7、utf-8或hz-gb-2312)。完成保存后一般就可以用OutLook Express解碼查看了。

利用WinZip解碼
如問題仍得不到解決,可以將亂碼郵件存為一個.txt的文本文件,并改其后綴名為.uue,然后調用WinZip來對亂碼郵件進行解碼。

添加信頭再用WinZip解碼
倘若解碼無效,可以像在.eml文件中添加信頭那樣在.uue文件中添加信頭,比如如果是quoted-printable型亂碼,則你可以在此文本文件的郵件信頭處添加如下几行:
   Mime-Version: 1.0
   Content-Type: text/plain;
   charset="gb2312"
   Content-Transfer-Encoding: quoted-printable
另外,如果不是QP亂碼,你則要判別它們是不是Base64亂碼或UTF-7、UTF-8亂碼或HZ亂碼;如果郵件亂碼不是GB碼漢字,而像是Big5碼,則須將“gb2312” 改為“big5”試一試。如果你最終認定亂碼不是中文文本,而是二進制文件,電子郵件軟件卻不能還原成附件,那么須要將信件中的“Content-Type:text/plain;”改為“Content-Type: application/x-download;”。接下來你就可以用Winzip解碼,相信絕大多數郵件亂碼到這一步就會露出其“廬山真面目”了。

特別提示:通過上面7個步驟,我們能夠看出對于UU編碼和MIME類的亂碼,一般可以有三种方法解決,第一种是通過轉寄亂碼郵件(有的情況下可以不用轉寄)后用支持該編碼的電子郵件軟件來接收、查看;第二种是將亂碼郵件存為以.eml為后綴名的文本文件,然后用Outlook Express解碼查看;第三种則是將亂碼郵件存為以.uu為后綴名的文本文件,然后用Winzip解碼查看,如果不直接解碼,則一般可以通過添加信頭來解決。對于各种不同類型的亂碼,它們要添加的信頭區別僅僅在于字符集charset和內容傳輸編碼方式Content-Transfer-Encoding。

字符重組
對于利用上面步驟還不能正确解碼的亂碼郵件,你可以將其存為一個.txt文本文件,然后使用任意以字符為單位的編輯軟件,將亂碼行的第一個字符刪除。看看后面的部分能不能和它相鄰的亂碼重新組成可識別的漢字。這樣雖然可能會丟失前面一個(或几個)漢字,但能挽救、還原大部分漢字,有時候就足以猜測出郵件的原意了。

利用Wincode解碼
如果到這里都不能搞定亂碼郵件,你只有借助Wincode了。將亂碼郵件存為一個.txt的文本文件,然后在Windows下調用Wincode程序解碼(Wincode程序除了支持UU編碼外還支持MIME編碼、BINHEX等編碼格式,應用范圍頗為廣泛)。

調節器用內碼轉換平台
本來這個步驟應該早早在你判斷出編碼類型后就決定做不做的,但如果開始你判斷失誤,那么現在不妨回過頭來全面做一遍。調出你所有的平台轉換工具(如中文之星、Richwin、南極星等),嘗試盡可能全面的內碼轉換,看看能不能“死馬當活馬醫”!一般來說,是可以將亂碼郵件正常顯示為簡體中文的。

如果以上步驟均不能奏效,則可以判斷收到的亂碼郵件是未經過編碼而造成第8位字節被濾掉的亂碼郵件,一般來說,這只能通過編程來解決,但郵件解碼器(Mail Decoder)這個軟件中提供了“7位-8位”這個功能,所以如果你不擅長編程就只好求助于它了。另外,可以再提醒你的是,在Outlook Express 5中,你可以在選中亂碼郵件后單擊右鍵,在出現的快捷菜單中選擇“屬性”項,并在出現的對話框中單擊“詳細資料”標簽,然后再單擊右下方的“郵件的源文件(M)”,此時你就會看到郵件亂碼的源文件。有時源文件就能顯示出你想要得到的所有信息,即使沒有的話,也能方便你將其存為.txt文本文件呀!

特別提示:郵件亂碼破解的一個關鍵點是判別亂碼的編碼類型,因為不同編碼的亂碼,在不同的平台上有不同的解決方法,因此解碼前如果能查看到亂碼郵件的內容(可以利用源文件),再根据其特征對郵件可能的編碼方式(Uuencode、Base64、QP或HZ等其它編碼方式)進行判斷將能使我們的破解工作事半功倍。

附各种類型的亂碼特征如下:
1.Uuencode“亂碼”的大體格式為:
   begin 666 lm.txt
   M("`@(-3:R,O`X,#ZRK?)SZ.LM-/`M,.[T]#2N_NO+S*];RPQN33IM/#S_&[
   MI<&JS?C2N]‘YMZ+5N<3‘P[2_[*.LMM3(R/‘M<2YI-?WH:+)^KONH:+/^[?1
   2NLV]NWYM[W*O=.PS^S$Q.T
   end
它的主要特征是:編碼以“begin xxx”開頭,后面緊接著編碼之前原始文件的名稱,接著是已經用Uuencode編碼的郵件內容,在亂碼內容的后面,即最后一行為“end”。

2.Base64 encode“亂碼”的大體格式為:
   Mime-Version: 1.0
   Content-Type: text/plain;
   charset="us-ascii"
   Content-Transfer-Encoding: base64
   ICAgINTayMvA4MD6yrfJz6OstNPAtMO709DSu8/uvLzK9bywxuTTptPDz/G7
   pcGqzfjSu9H5t6LVucTHw7S/7KOsttTIy8PHtcS5pNf3oaLJ+rvuoaLP+7fR
   us29u835t73KvdOwz+zEx8O0

3.QP encode“亂碼”的大體格式為:
   Mime-Version: 1.0
   Content-Type: text/plain;
   charset="gb2312"
   Content-Transfer-Encoding: quoted-printable
   D4=DA=C8=CB=C0=E0=C0=FA=CA=B7=C9=CF=A3=AC=B4=D3 =C0=B4=C3=BB=D3=D0=D2=BB=CF=EE=BC=BC=CA=F5= BC=B0=C6=E4=D3=A6=D3=C3=CF=F1=BB=A5=C1=AA=CD=F8 =D2=BB=D1=F9=B7=A2
通常含有很多等號“=”。在實際使用中,這种編碼還有一种變形,即用“%”號代替“=”號。

4.UTF-7“亂碼”的大體格式為:
   Mime-Version: 1.0
   Content-Type: text/plain;
   charset="utf-7"
   Content-Transfer-Encoding: 7bit
   +VyhOunx7U4ZT8k4K/wxOzmdlbKFn CU4AmHligGcvU8pRdl6UdShQz06SgFR/UU4AaDdT0V xVkKNOSF/r/wxb+/wxOuk7sVyh1H06nVIx1 H207ZblfDzABicJf9VSMYQ+LxntJZbmXYk5 fX8VxNk8aU9F1H13oWSd2hFPYUxYwAgA8-
在開頭和結尾分別有“+”和“-”符號。

5.UTF-8“亂碼”的大體格式為:
   Mime-Version: 1.0
   Content-Type: text/plain;
   charset="utf-8"
   Content-Transfer-Encoding: 8bit
   ㄤ漢綾誨 蹭 錛 ユ病 欏規 跺 ㄥ  緗 峰 灞涔 揩錛 轟滑 伐浣 敓媧匯 璐瑰 ゅ 瑰 褰卞 d

6.HZ“亂碼”的大體格式為:
   Mime-Version: 1.0
   Content-Type: text/plain;
   charset="hz-gb-2312"
   Content-Transfer-Encoding: quoted-printable
   ~{TZHK@`@zJ7IO#,4S@4C;SPR;On<^4s5D1d;/!#~}

通常用~{ 和 ~}括起漢字編碼部分,但字母和數字不被編碼。

7.半個漢字“亂碼”的大體格式為:
   諶死■飛希??永疵揮幸幌羆際跫捌漵τ孟窕チ謊朴鼓敲純歟??勻嗣塹墓ぷ鰲⑸■睢??押徒煌朴絞接跋炷敲創螅??⑶遙??孀鷗叨刃畔鬍耐范縞緇岬牡嚼矗??嗣竊諫
  
8.Big5“亂碼”的大體格式為:
  摸菌 ㄓ⊿Τ??兜??砃のㄤ萊ノ鉤が羛呼??妓  ?? 癸 ?? ネ ユ└よΑ  帝藹 て??呼蹈 ?? ㄓ

(名典工作室)
(http://www.dajiyuan.com)

如果您有新聞線索或資料給大紀元,請進入安全投稿爆料平台。
最熱新聞
娛樂追星
生活消費
文化博覽
相關專題: 網上教程