標題:
〔教學〕亂碼翻譯全攻略
[打印本頁]
作者:
飛天遊俠
時間:
2006-10-2 10:10 PM
標題:
〔教學〕亂碼翻譯全攻略
有很多朋友都被Windows系統中各式各樣的亂碼所困惑。特別是收到的一些十分重要的信件程式、檔案時會遇到亂碼,登上港台網站時會看到亂碼,還有原先顯示標準的Windows桌面、選單中的漢字形如天書,本來顯示標準的各種套用程式、遊戲中的漢字也成了亂碼等等,真的很是急人誤事!那怎麼辦呢?
漢字亂碼分類
漢字亂碼現象有4種類型:
1.文字亂碼:是Windows系統顯示亂碼,如:選單、桌面、提示框等。這是由於註冊表中有關字型部分的設定不當引起的;
2.文件亂碼:是各種套用程式、遊戲本來顯示中文的地方出現亂碼。這種亂碼形成的原因比較複雜,有第1類的亂碼原因,也可能是軟體中用到的中文動態連結庫被英文動態連結庫覆蓋所造成的;
3.檔案亂碼:主要是指信件亂碼;
4.網頁亂碼:是由於港台的繁體中文大五碼(BIG5)與大陸簡體中文(GB2312)不通用而造成的。
消除各類亂碼的方法
一 系統亂碼的消除方法
這類亂碼是由於在Windows註冊表中,關於字型部分組態不標準造成的,即使你用內碼翻譯軟體處理也不會消除這類亂碼。那怎麼辦呢?請跟我來:
方法一:找一台與你的Windows版本相同且顯示標準的機器,依下列步驟進行:
1.在標準機器上選取「開始」→「執行」,在對話框中鍵入「regedit」,開啟註冊表編輯器;
2.請你將游標定位到「HKEY_LOCAL_MACHINE\ system\CurrentControlSet\Control\Fontassoc」,然後選取「註冊表」→「匯出註冊表檔案」,再選取「分支」,匯出該分支註冊表訊息到檔案(如ZT.REG)中;
3.把ZT.REG檔案複制到你那顯示亂碼的機器上,方法是:在顯示亂碼的機器上執行「regedit」,開啟註冊表編輯器,選取「註冊表」→「匯入註冊註冊表」,把ZT.REG檔案匯入註冊表中即可。
方法二:若果你找不到一台與你的Windows版本相同且顯示標準的機器,則需要手動恢復字型部分的註冊表
項,其步驟是:
1.首先在顯示亂碼的機器上選取「開始」→「執行」,在對話框中鍵入「regedit」,開啟註冊表編輯器;
2.選取「HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Control\Fontassoc」,標準情況下,會有Associated DeaultFonts、Associated CharSet兩個資料夾,其正確的內容應是:
子目錄內容
中文Win98
中文Win98(OEM版)
中文Win2000
Associated CharSet
ANSI(00)=「yes」
GB2312(86)=「yes」
DEN(FF)=「yes」
SYMBOL(02)=「no」
ANSI(00)=「yes」
GB2312(86)=「yes」
OEM(FF)=「yes」
SYMBOL(02)=「no」
ANSI(00)=「yes」
OEM(FF)=「yes」
SYMBOL(02)=「no」
Associated DefaultFonts
AssocSystemFont=「mingliu.ttf」
FontPackageDecorative=「新細明體」
FontPackageDontcare=「新細明體」
FontPackageModern=「新細明體」
FontPackageRoman=「新細明體」
FontPackageScript=「新細明體」
FontPackageSwiss=「新細明體」
或
AssocSystemFont=「mingliu.ttf」
FontPackage=「新新細明體」
FontPackageDecorative=「新新細明體」
FontPackageDontcare=「新新細明體」
FontPackageModern=「新新細明體」
FontPackageRoman=「新新細明體」
FontPackageScript=「新新細明體」
FontPackageSwiss=「新新細明體」
3.當出現漢字亂碼時,上述兩個資料夾中的內容就會不完整,有的沒有Associated CharSet資料夾或其中的內容殘缺不全;有的Associated DefaulFonts下的內容殘缺。若果遇到這種情況怎麼辦呢?其實你只要開啟註冊表編輯器,在「HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Fonassoc」下,根據以上的正確內容恢復即可。
二 套用程式、遊戲亂碼的消除方法
明明是中文軟體,可顯示界面上卻出現亂碼,這可能是由於註冊表中關於字型設定的訊息不正確地被改變而造成的,一般是因為軟體的中文連結庫被英文連結庫覆蓋而引起的,這種現象經常發生在用微軟開發工具,例如VB、VC開發的中文軟體上。在這類軟體中,選單等顯示界面上的漢字都是受一個動態連結庫「.DLL檔案」控制,而軟體的這個動態連結庫一般是安裝在Win 98/2000的System目錄下的,若果以後你安裝了某個英文軟體也使用同名的動態連結庫,則英文軟體的動態連結庫就會覆蓋掉你原先的Windows\System下的中文軟體的動態連結庫。這樣,當你執行中文軟體時就會呼叫英文的動態連結庫,因此出現亂碼。解決辦法是重新安裝中文軟體,恢復中文動態連結庫即可。
三 電子信件亂碼的消除方法
1.造成電子信件亂碼的原因很多,主要有以下幾個方面:
(1)動作系統語種不同。對於中文電子信件,若果收信方所用的動作系統是英文環境而且沒有外掛中文系統或未切換為中文編碼模式,也會無法看到中文,只見到亂碼。所有的雙位元組字元(如中文簡/繁體的GB和BIG5碼及日文的JIS、 EUC和朝鮮文的 KSC碼等)在非本語種動作系統下都會出現亂碼。同樣在中文簡體的GB碼環境下看其他雙位元組字元時也只能看到亂碼。
解決方法:安裝多語系支援包或使用多內碼顯示平台,對收到的信件,根據其使用的語種切換到相應的編碼模式即可消除亂碼。
(2)信件伺服器不支援8位(非ASCII碼格式)。傳輸信件的傳輸機制或信件編碼的不同,可能造成信件伺服器不支援8位(非ASCII碼格式)傳輸而形成信件亂碼。例如直接傳送中文或二進位等非ASCII碼格式的信件(如中文雙位元組檔案、圖片檔案.jpg、可執行檔案.exe或壓縮檔.zip等二進位檔案)時,信件伺服器有可能無法處理,便把信件中每個字元的第8位都過濾掉,從而造成信件訊息的失真或損壞,在收到信件時就是一堆亂碼。
解決方法:在傳送8位格式的文字檔案時,必須事先進行編碼,將檔案轉換為7位ASCII碼或更少位數的格式,然後才能保證檔案的正確傳輸。收件人收到7位或更少位格式的信件後,可以再轉換為8位的格式,這樣就可避免亂碼。
(3)收發端使用的E-mail軟體和設定不同。一般E-mail軟體的「附件」功能都可以自動對信件先進行編碼,然後再送出。這樣,只要收信人使用E-mail軟體就能區別信件的編碼模式,就可以自動將信件解碼。然而由於收發件人所用的E-mail軟體預設組態不同或收發件人自己定制的一些選項不同,所以在收到編碼的信件後,系統不一定能識別出信件所用的編碼方法,自然無法自動解碼,這樣就會出現亂碼。
解決方法:
1可以用WinZip+IE來解碼,請你把亂碼信件的內容,複制到剪貼簿中,然後將其貼上到記事本中,存為文字檔案(例如YJ.txt),再將其後綴改為.uue(改為YJ.uue),點擊此檔案,會啟動WinZip,然後啟動IE,把WinZip中的001.txt 檔案拖到IE視窗中,就會顯示信件原來的內容,而不會看到亂碼。
2可以根據信件中的關鍵字元判斷編碼方法,選取合適的解碼軟體進行解碼。信件的編碼模式主要有:UUENCODE、 Base64 encode、QPencode、BINHEX等。 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;"......end
特徵:亂碼前面含有「begin xxx」,後面是編碼前的原始檔案名(如kk.zip),接著是已經由編碼的信件內容(如上述的亂碼部分),最後一行為「end」。
解碼辦法:可用BECKY!EUDORA等E-mail軟體,選取編碼中相應的選項就可解碼,也可以在E-mail軟體中儲存亂碼信件,存為後綴為「.UUE」格式的檔案,然後用Winzip 解碼展開。解碼後就會消除亂碼。
MIME/BASE64 encode:該編碼模式將3個位元組用4個位元組表示,由於編碼後的內容是6位的,因此可避免第8位被截掉,大體格式為:
MIME-Version:1.0
Content-Type:text/plain; charset="us-ascii"
Content-Transfer-Encoding:base64
Status:R
SGmhQbF6pm6hSafapmK69Lj0pFexb6q+sXqsT6Skp OWrSKXzsN3DRLFNrmGhQQ0Kq1+sTqq6vdCx
0LF6tFit07D
dw0ShRw0KD QqtuqX9p2m2RLF6p9qoz6XOIE 1Py3Jvc29mdCuiB
JbnRlcm5ldCBN……
特徵:亂碼前一般有如下幾部分「信頭」:Content- Type(內容類型)、CharSet(字集)和Content-Transfer-Encoding(內容傳輸亂碼模式)。
解碼辦法:用E-mail軟體,選取編碼中Base64 選項就可解碼,解碼後會消除亂碼。
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="GB2312"
Content-Transfer-Encoding;Quoted-Pintable
然後以「.EML」為後綴儲存檔案,用資源管理器按兩下開啟檔案即可顯示正確的內容。若果還有部分漢字亂碼,可以用WinZip對存盤後的EML檔案進行解壓,即可看到正確的內容。
BINHEX:這種編碼模式大體格式為:
(This file must be converted with Binhex4.0)
SGmhQbF6pm6hSafapmK69Lj0pFexb6qssTqq6vdCx
0LF6tFit07Ddw0ShRw0KDQqtuqX9p2m2RLF6p9q
oz6XOIE……
解碼辦法:用E-mail軟體對它解碼;也可在E-mail軟體中儲存亂碼信件,存為後綴為「.HQX」格式的檔案,然後用WinZip解碼展開,解碼後會消除亂碼。
UTIF-7/UTIF-8:它們是UNICODE的兩種轉換碼。
UTIF-7編碼模式大體格式為:
+SGmhQbF/6pm6hSafapmK69L/j0pFexb6q+sXqsT6Skp. OWrSKXzsN3DRLFNrmGhQQ0Kq1-sTqq6vdCx
0LF6tFit07Ddw0
ShRw0KD QqtuqX9p2m2RLF6p9qoz6XOIE 1Py3Jvc29mdCuiBJbn
Rlcm5ldCBN……
解碼辦法:在原E-mail頭加入以下訊息:
MIME-Version:1.0
Content-Type:text/plain; charset="utf-7"
Content-Transfer-Encoding:7bit
插入後與字元留一空行,將信件存為「.EML」後綴,然後用Outlook即可解碼,消除亂碼。
UTIF-8
解碼辦法:在原E-mail頭加入以下訊息:
MIME-Version:1.0
Content-Type:text/plain; charset="utf-8"
Content-Transfer-Encoding:8bit
將信件存為「.EML」後綴,然後用Outlook即可解碼,消除亂碼。
另外,還可以採用以下方法解決:
A.請你在Outlook Express 中,把「檢視」→「編碼」選為「簡體中文」;
B.變更IE的設定:在IE瀏覽器中,開啟「工具」 →「Internet選項(o)...」→「進階」,將「瀏覽」中「始終以 UTF-8 傳送URL」選項前面的勾去掉;
C.或將檔案下載到近端硬碟裡面再開啟(點擊滑鼠右鍵選取「檔案另存為…」)。儲存檔案時,檔案名可能會是亂碼,只需變更該檔案名即可;
D.或直接使用檔案名為英文的附件,可以直接在IE中開啟。
但有時仍不能奏效。
3無意中,筆者近日在網上衝浪時發現了一個好東西:很酷的CodeView「亂碼察看器」!好事共享,不敢獨吞!這就趕緊介紹給朋友們:
大名:亂碼察看器
小名:CodeView
版本:2.50
系統平台:Win 95/98/NT/2000
CodeView「亂碼察看器」顧名思義就是用來察看各種亂碼的工具軟體,目前已經可以支援MIME/BASE64,Quoted-Printable、HZ和UUCode 4種形式的編碼和解碼,通過一些特殊的算法,此程式還可以解開部分由於位元組高位被屏蔽而形成的死亂碼(使用其他模式的解碼),另外還提供了很多附加的功能,比如單鍵解碼功能和混合亂碼識別功能,使得使用本程式解碼變得非常容易和輕鬆,CodeView是綠色軟體,無需安裝,只要將得到的壓縮檔解開到一個目錄中即可執行。它有兩種使用方法:
方法一:在有亂碼的視窗中直接按下單鍵解碼快速鍵,預設為F7,若果視窗中的亂碼能被識別,就會有一個視窗覆蓋目前的亂碼視窗,你可以直接在這個視窗中閱解碼後的內容。在大多數情況下,筆者建議你使用這個模式。
方法二:將亂碼的內容通過剪貼簿複製到CodeView「亂碼察看器」的源視窗中,然後你可以試著用不同的解碼模式進行解碼。這種模式解碼將給你更多的選取自由,並且可以使用一些在單鍵解碼中無法實現的解碼模式(主要是其他模式解碼和UUCode解碼),對於一些單鍵解碼無法解決的亂碼,你就可以使用此模式來試試解碼。
下載位址:http://www.skycn.com/soft/394.html
2.避免別人收到亂碼信件的方法:
(1)傳送前將信件按7位格式重新編碼
在傳送8位格式的文字檔案時,必須事先進行編碼,將檔案轉換為7位ASCII碼或更少位數的格式,然後才能保證檔案的正確傳輸。收件人收到7位或更少位格式的信件之後,可以再轉換為8位的格式,這樣就可以正確閱讀了。在信件用戶端軟體中的書寫選項中,設定預設自動為7位編碼。
(2)E-mail軟體中的正確設定
使用英文E-mail軟體應設定成:
文字設定Default CHARSET:ISO 8859-1(Latin1)
編碼模式Encoding:Quoted-Printable,不可選取7位(因為7位不支援中文)
字碼頁Code Page(可選):936或HZ-GB-2312
以支援整字識別信件格式:MIME
字型:新細明體
中文E-mail軟體應設定成:
文字設定Default CHARSET:簡體中文GB2312
編碼模式Encoding:Quoted-Printable信件格式:MIME
字型:新細明體
Outlook Express中應把「簡體中文(GB2312)」作為
預設的信件使用語系,選取「國際設定」為接收的所有信件使用預設的編碼。
(3)傳送重要訊息時先發測試
當你需要傳送重要訊息時,為了確認是否無須編碼即可傳送正文,應該先傳送測試信。而且還應確定收件人能否對附件檔案進行解碼。若果傳送已經編碼的信件,則最好加入足夠的「信頭」訊息,以便收件人知道所需的解碼方法。建議你對UUENCODE/UUDeview編碼模式用UUENCODING作信頭,對Mpack編碼模式用Base64 encoding作信頭。
(4)轉換成合適的內碼
在E-mail軟體的書寫選項中,設定預設自動為7位編碼。對用漢字系統編輯的中文信件在傳送前,最好在固定的簽字欄中註明自己所使用的漢字碼標準(如:GB2312、中文 HZ、GBK);港澳台及東南亞地區信件作者在使用BIG5碼撰寫完信件、向內地傳送前要轉換成上述3種簡體國標碼中的一種形式並在簽字欄中註明。如不轉換則可能無法閱讀,因為國內使用者使用的信件系統有很多是不支援BIG5碼的。
(5)利用「附件」功能傳送重要的檔案
信件系統附加這類非標準 ASCII碼格式的檔案時,附加檔案通常可以自動進行「Base64」模式編碼(僅對附件部分進行編碼)。在用「附件」模式傳送信件之前,無需進行編碼,否則適得其反。因為信件軟體能夠自動成功解碼這類 「附加」檔案,因此在傳送中文類信件時應該偏好這種方法。
若果無法以附件模式傳送檔案,則必須在正文中傳送中文或二進位檔案。若果發/收件人之間遠隔萬里,則傳輸過程中,第8位將可能被截掉。這時最好先在正文中用中文給收件人發一封測試信,並瞭解對方能否正確收到信件正文。若果第8位被截掉,則收件人將會看到一些亂碼,而不是上述的uu/b64/Qp等格式,而且這種信件幾乎不可恢復。
解決方法:在你所使用的信件系統中,選取其偏好項或選項組態中的「Quoted Printalbe」或「MIME encoding」即可。
3.非中文平台上,使中文電子信件不出現亂碼方法
當對方在沒有中文平台的情況下開啟你發的中文電子信件時,就會出現亂碼。解決辦法有兩種:
(1)用E-mail AID之類的工具。UCWIN GOLD 1.0附帶的工具E-mail AID可把文字檔案轉換為AID格式檔案,大小只比原TXT檔案增加幾K。寫好中文信件後,用文字格式存盤,然後用E-mail AID以AID格式儲存,最後把此檔案連同E-mail AID一起作為附件插在信中。對方收到信後,只需執行E-mail AID開啟AID格式檔案即可看到漢字,不管對方在何種語系平台下,都不會出現亂碼。
(2)把中文電子信件以圖形格式儲存。用畫筆等繪圖軟體書寫中文信件,在圖片中輸入文字,用預設的BMP格式儲存,將屬性置為黑白模式(以減少BMP圖片體積),然後用 WinZip把它壓縮成ZIP格式,作為附件在信件中傳送,這樣不管對方在何種語系平台下,都不會出現亂碼。這種方法的缺點是生成的BMP中文信件的體積比較大。
4.收信方排除亂碼的方法
請你在「檢視(V)」下拉選單中選中「語系」,隨後出現的選單中會內含本系統所能支援的全部漢字標準,在其中點選信件中所指明的一種。若果收到的信件中沒有指明其所使用的漢字標準,則只可按順序點選,直到信件正文顯示正確為止(數個漢字標準中必有一個前面有「.」標示,此即你編輯器所用的漢字標準)。若使用的是Netscape,可在Option選單的Document Encode中選取相應的項目即可。
四 關於網頁、文字和文件檔案亂碼的消除方法
大家知道,網頁亂碼是瀏覽器對HTML網頁解釋時形成的。若果在網頁的代碼中有形如:
〈HTML〉〈HEAD〉〈META CONTENT=「text/html;charset=ISO-8859-1」〉〈/HEAD〉....〈/HTML〉的語句,瀏覽器在顯示此頁時,就會出現亂碼。因為瀏覽器會將此頁語種辨認為「歐洲語系」。
解決辦法:
1.將語種「ISO-8859-1」改為GB2312,若果是繁體網頁則改為BIG5。
2.不修改網頁代碼,事先為瀏覽器安裝多語系支援包(例如在安裝IE時要安裝多語系支援包),這樣在瀏覽網頁出現亂碼時,就可以在瀏覽器中選取選單欄下的「檢視」→ 「編碼」→「自動選取」」→「簡體中文(GB2312),如為繁體中文,則選取「檢視」→「編碼」→「自動選取」」→「 繁體中文(BIG5),其他語系依此類推選取相應的語系,這樣可消除網頁亂碼現象。
3.利用多內碼顯示平台來轉換內碼。
4.網頁無亂碼儲存的方法是:用瀏覽器開啟網頁時,在 「檢視」→「編碼」中選取「自動選取」,存盤時儲存類型選 「Web頁」,編碼選取「UNICOD」,這樣儲存過的網頁再次開啟時,在瀏覽器選單「檢視」→「編碼」中不管選取簡體中文(GB2312)、簡體中文(HZ)還是UNICODE(UTF-8)或繁體中文(BIG5),最終顯示都不會出現亂碼。
Win 9x/2000中文字、文件檔案的亂碼,一般是繁體中文顯示在簡體中文系統下,或是是在相反的情況造成的。只要把原本是繁體的內碼轉換為簡體內碼(或是相反)就可消除亂碼。Word 2000就能勝任這類工作,例如要把繁體中文轉換為簡體中文,方法是:選取要轉換內碼的檔案,在跳出的對話框中,選取「其他編碼」中的「繁體中文(BIG5)」一項,開啟此檔案時就不會出現亂碼。無亂碼儲存的方法:在儲存時選取「檔案」中的「另存為」,先存為 「Word文件」,存盤後開啟再存為純文字等其他格式;你也可以用Word 2000的「中文簡繁轉換」工具實現無亂碼儲存,方法是在選單欄中選取「工具 」→「語系」→「中文簡繁轉換」,內碼轉換後再儲存。金山公司的WPS 2000也能轉換內碼,支援GB2312、BIG5、GBK等3種主要的漢字編碼,並可在輸出RTF、TXT、HTM格式檔案時對內碼進行轉換。除此之外,消除這類亂碼還可用內碼轉換工具,可以對BIG5(繁體中文)和GB2312(國標碼、簡體中文)進行相互轉換來消除亂碼。
最後,台灣出的繁體遊戲一般會出現亂碼,用w2kxpcjk2這個工具就可以解決了~300多K的一個東西,可以去網上搜尋下載~
作者:
Hetty
時間:
2006-11-27 08:55 PM
謝謝大大的分享 ∼
辛苦大大您啦∼
作者:
JP-chenh
時間:
2007-1-1 05:53 AM
這一大篇章看得頭暈眼花,看到後面就忘了前面,
帶回家慢慢看才行,很感興趣喔,不知照著做得出嗎?
不是那麼容易的樣子,謝謝您. . . .如果是網路收集來的
謝謝您分享您的收藏資料,如果是您手打的. . . . .
喔. . . . 真不簡單,非常感激. . . . .
作者:
maxaei
時間:
2007-3-10 05:46 PM
感謝大大分享,非常實用的小常識。
作者:
112233我
時間:
2007-3-11 02:47 PM
Quote:
Originally posted by
飛天遊俠
at 2006-10-2 10:10 PM:
有很多朋友都被Windows系統中各式各樣的亂碼所困惑。特別是收到的一些十分重要的信件程式、檔案時會遇到亂碼,登上港台網站時會看到亂碼,還有原先顯示標準的Windows桌面、選單中的漢字形如天書,本來顯示標準的各 ...
thank you thank you thank you
作者:
xp20060726
時間:
2007-3-11 04:43 PM
標題:
感謝您!
真的感謝您這麼費心教導,
我們該好好學學才對.
作者:
jaki
時間:
2007-3-12 09:58 PM
感謝"飛天遊俠"大大真正專家不恥教學!實在太精彩了!
作者:
bossjay
時間:
2007-5-7 06:57 PM
內容真長耶..不過真的是很有用久的文章 還是抓下來慢慢研究好了 感謝囉..
作者:
kenny888
時間:
2007-5-11 07:24 PM
THANK YOU FOR SHARING
作者:
judge
時間:
2010-8-23 11:37 AM
您真是太用心了,非常感謝分享哦...
作者:
kc163906
時間:
2010-9-11 06:14 AM
感謝大大這麼用心的講解~讓大家受益無窮阿
作者:
jone2s
時間:
2011-5-7 11:34 PM
這是一篇值得收藏而且要用心細讀的文章
謝謝大大的用心 受益良多
作者:
jim16
時間:
2011-8-10 10:28 PM
標題:
#13
Thanks A Lot For Sharing,很用来编此文章。
作者:
tuiping
時間:
2013-2-15 05:42 PM
漢字亂碼現象,看這麼多我也亂去了,講得那樣清楚,謝謝大大分享
歡迎光臨 網際論壇 (http://centurys.net/)
Powered by Discuz! 2.5