倍可親

回復: 2
列印 上一主題 下一主題

消滅亂碼我有好辦法

[複製鏈接]

1萬

主題

1萬

帖子

1萬

積分

八級貝殼核心

倍可親終生會員(廿一級)

Rank: 5Rank: 5

積分
18033
跳轉到指定樓層
樓主
kent 發表於 2005-11-10 09:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 當我們瀏覽網頁、打開文檔或郵件,運行軟體時,經常會看到亂碼,通常是由於源文件編碼,Windows不能正確識別造成的的,也可能是其 他原因。亂碼給我們帶來了太多的煩惱,為了幫助大家徹底擺脫亂碼,下面我們就來探討一下亂碼的形成原因及其消除方法。

  一、亂碼有五種類型

  常見的亂碼,一般可以分成五種類型:第一類是文本/文檔文件亂碼,這一般是由於源文件編碼,與Windows使用的編碼不通用造成的;第二 類是網頁亂碼,形成原因與第一類亂碼類似;第三類是Windows系統界面亂碼,即中文Windows的菜單、桌面、提示框等顯示亂碼,主要是 Windows註冊表中有關字體的部分設置不當引起的;第四類是應用程序的界面亂碼,即各種應用程序(包括遊戲)本來顯示中文的地方出現亂碼 ,形成原因比較複雜,有第二類的亂碼原因,也可能是軟體用到的中文鏈接庫,被英文鏈接庫覆蓋造成的;第五類是郵件亂碼,形成原因也極 其複雜。

  二、如何消除應用程序的界面亂碼?

  目前有些軟體發行了Unicode版本,這是一種通用的字元編碼標準,涵蓋了全球多種語言及古文和專業符號,這種版本的軟體運行在任何系 統和語言上都不會亂碼,如果是非Unicode編碼的程序,就會有亂碼現象。

  【形成原因】:原因有三種。如果是由於Windows註冊表中關於字體設置的信息不正確造成的,你可以用下面「如何消除Windows系統界面亂 碼」介紹的辦法去解決;如果用上法解決不了,那就可能是由於軟體的中文鏈接庫,被英文鏈接庫覆蓋而引起的。這種現象經常發生在用微軟 開發工具例如VB、VC開發的中文軟體上,這類軟體中,菜單等顯示界面上的漢字都是受一個動態鏈接庫(DLL文件)控制,而軟體的這個動態鏈 接庫一般安裝在Windows\System目錄下,如果以後安裝了某個英文軟體也使用同名的動態鏈接庫,則英文軟體的動態鏈接庫就會覆蓋中文鏈接 庫,這樣,運行中文軟體時就會調用英文的動態鏈接庫,因此出現亂碼。解決辦法:重新安裝中文軟體,恢復中文動態鏈接庫即可。

  如果以上方法也無濟於事,對於Win9X/ME系統,你可以安裝使用MagicWin98、南極星等內碼轉換軟體,轉換內碼后即可消 除亂碼;對於WinXP系統,建議使用微軟多語言支持工具MicrosoftAppLocale,利用它為指定程序設置相應的語言區域, 這樣也可消除亂碼。

  三、如何消除文本/文檔文件亂碼?

  【形成原因】:一般是由於文檔採用的字符集,系統不支持造成的。例如繁體中文的文檔顯示在簡體中文系統下,或者相反的情況,就會造 成文檔顯示時亂碼。只要你內碼轉換正確,例如把原本是繁體的內碼,轉換為簡體內碼(或者相反),即可消除亂碼。

  【解決辦法】:有以下四種解決辦法:

  1、使用Word2003/XP轉換內碼

  Word2003/XP支持眾多的語言,可以正確顯示非Unicode類型的文本文件,單擊「工具」菜單下的「語言」/設置語言,你可以把默認語言設 置成非中文,例如日語,這樣Word就可以正確顯示日文了。

  當然你也可以用它進行簡體中文與繁體中文之間的轉換工作,如果文件有亂碼,你轉換一下即可消除。例如要把繁體中文轉換為簡體中文, 方法是:選擇要轉換內碼的文件,在彈出的對話框中(如下圖),選擇「其他編碼」中的「繁體中文(BIG5)」一項,打開此文件時就不會出 現亂碼。

  

  2、使用Word2003/XP無亂碼保存

  在Word2003/XP中,當保存時選擇「文件」中的「另存為」,先存為「WORD」文檔,存檔后打開再存為純文本等其他格式;或者在菜單欄中 選擇「工具/語言/中文簡繁轉換」,內碼轉換以後再保存。

  3、使用內碼轉換工具

  除此之外,使用內碼轉換工具也可以消除此類亂碼,你只要對BIG5(繁體中文)和GB2312(國標碼、簡體中文)進行相互轉換即可實現。

  4、使用WPS2000轉換內碼

  WPS2000也能轉換內碼,支持GB2312、BIG5、GBK等三種主要的漢字編碼,並可在輸出RTF、TXT、HTM格式文件時對內碼進行轉換。

 四、如何消除網頁亂碼?

  【形成原因】:網頁亂碼是瀏覽器(IE等)對HTML網頁解釋時形成的,如果網頁製作時編碼為A,瀏覽器卻以編碼B顯示該網頁,就會出現亂 碼,因此只要你在瀏覽器中也以編碼A顯示該網頁,就會消除亂碼。

  例如網頁的代碼中有形如:〈HTML〉〈HEAD〉〈META CONTENT=「text/html;charset=ISO-8859-1」〉〈/HEAD〉的語句,瀏覽器在顯示此頁時,就會出現亂碼,因為瀏覽器會將此頁語種辨認為「 歐洲語系」。

  【解決辦法】:有以下四種解決辦法:

  1、在瀏覽器中選擇「編碼」菜單

  事先為瀏覽器安裝多語言支持包(例如在安裝IE時要安裝多語言支持包),這樣當瀏覽網頁出現亂碼時,即可手工更改此類網頁的編碼方式 ,在瀏覽器中選擇菜單欄下的「查看」/「編碼」/「自動選擇」/簡體中文(GB2312),如為繁體中文則選擇「查看」/「編碼」/「自動選擇」 /繁體中文(BIG5),其他語言依此類推,選擇相應的語系,這樣便可消除網頁亂碼現象。

  2、修改網頁代碼

  用FrontPage等軟體打開出現亂碼的網頁,修改該網頁代碼,在以下句子中

  〈META CONTENT=「text/html;charset=ISO-8859-1」〉,將語種「ISO-8859-1」改為GB2312,如果是繁體網頁則改為BIG5。

  3、無亂碼保存網頁

  用瀏覽器打開該網頁,在「查看」/「編碼」中選擇「自動選擇」,存檔時保存類型選「WEB頁」,編碼選擇「UNICODE」,這樣保存過的網 頁再次打開時,在瀏覽器菜單「查看」/「編碼」中不管選擇簡體中文(GB2312)、簡體中文(HZ)還是UNICODE(UTF-8)或繁體中文(BIG5) ,最終顯示都不會出現亂碼。

  4、使用多內碼顯示軟體

  使用多內碼顯示軟體來轉換內碼,也可以消除亂碼。常用多內碼顯示軟體有:

  

  五、如何消除Windows系統界面亂碼?

  【形成原因】:這類亂碼是由於Windows註冊表中關於字體部分配置不正常造成的,即使您用內碼翻譯軟體(如南極星、MagicWin98等)處 理也不會消除。

  【解決辦法】:在Windows註冊表中,恢復關於字體部分的正確設置。

  1、利用顯示正常的電腦

  假如有一台Windows版本相同、顯示正常的電腦可以利用,你可以如下步驟進行恢復:在正常機器上選擇「開始」/「運行」,在對話框中鍵 入「REGEDIT」,打開註冊表編輯器;游標定位到「HKEY_LOCAL_MACHINE\SYSTEM\CURRENT CONTROL SET\CONTROL\FONTASSOC」,選擇「註冊表/導出註冊表文件」,選擇「分支」,導出該分支註冊表信息到文件(如LI.REG)中(如下圖);把 LI.REG文件COPY到顯示亂碼的機器上,在顯示亂碼機器上運行REGEDIT,選擇「註冊註冊表」/「導入註冊註冊表」,把LI.REG文件導入註冊表 中。

  

  2、在顯示亂碼的電腦上操作

  如果沒有顯示正常的電腦可以利用,就需要您手工恢復字體部分註冊表項,方法有以下兩種:

  第一種方法:用記事本編輯一個文件,然後保存為擴展名「REG」(文件名隨意),再用滑鼠右鍵單擊這個文件,在右鍵菜單中選擇合併,即 可完成對註冊表的改動。該文本文件的內容如下:

  REGEDIT4

  [HKEY_LOCAL_MACHINE\System\CurtentControlset\control\fontassoc]??

  [HKEY_LOCAL_MACHINE\System\CurtentControlset\control\fontassoc\Associated DefaultFonts]??

  "assocSystemFont"="simsun.ttf"

  "FontPackageDontCare"="宋體"

  "FontPackageRoman"="宋體"

  "FontPackageSwiss"="宋體"

  "FontPackageModem"="宋體"

  "FontPackageScript"="宋體"

  "FontPackageDecorative"="宋體"

  [HKEY_LOCAL_MACHINE\System\CurtentControlset\control\fontassoc\Associated CharSet]??

  "ANSI(00)"="yes"

  "SYMBOL(02)"="no"

  "OEM(FF)"="yes"

  "GB2312(86)"="yes"  

  第二種方法:在出現亂碼的電腦上,單擊菜單「開始」/運行,鍵入REGEDIT打開註冊表;找到「HKEY_LOCAL_MACHINE\SYSTEM\CURRENT CONTROL SET\CONTROL\FONTASSOC」,正常情況下會有ASSOCIATED DEFAULTFONTS、ASSOCIATED CHARSET兩個文件夾,這些文件夾中正確的參數如下表所示:

  

  當出現漢字亂碼時,上述兩個文件夾中內容就會不完整,有的沒有ASSOCIATED CHARSET文件夾、或其中內容殘缺不全;有的ASSOCIATED DEFAULTFONTS下內容殘缺。只要你打開註冊表,在「HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\FONTASSOC」下,根據以上正確 內容恢復即可。

六、如何消除郵件亂碼?

郵件亂碼的形成原因很多,主要有以下幾個方面,針對以下幾種形成原因,應該採取不同的亂碼消除方法:

1、收發信雙方的語種不同導致的

收發雙方使用的操作系統的不同,可以造成亂碼。比如發件人使用的是日文的Windows,而收件人使用的是簡體中文的Windows,這樣的郵件 當然會造成亂碼。對於中文電子郵件,如果收信方所用的操作系統是英文環境、而且沒有外掛中文系統或未切換為中文(如南極星等)編碼方 式,也會無法看到中文、只可見亂碼。所有的雙位元組字元(如中文簡/繁體的GB和BIG5碼及日文的JIS、EUC和朝鮮文的 KSC碼等)在非本語種操作系統下都會出現亂碼;同樣在中文簡體的GB碼環境下,看其他雙位元組字元時也只能看到亂碼。

【解決辦法】:安裝多語言支持包或使用多內碼顯示平台(如南極星等),對收到的郵件,根據其使用的語種切換到相應的編碼方式即可消 除亂碼。

2、發信伺服器不支持8位(非ASCII碼格式)傳輸

郵件傳輸機制或郵件編碼的不同,可能造成郵件伺服器不支持8位(非ASCII碼格式)傳輸而形成郵件亂碼。例如直接發送中文或二進位等非 ASCII碼格式的郵件(如中文雙位元組文件、圖片文件.jpg、可執行文件.exe或壓縮文件.zip等二進位文件)時,郵件伺服器有可能無法處理,便 把信件中每個字元的第八位都過濾掉,從而造成郵件信息的失真或損壞,在收到郵件時就是一堆亂碼。

【解決辦法】:只能由發件人解決。當發送8位格式的文本文件時,必須事先進行編碼,將文件轉換為7位ASCII碼或更少位數的格式,然後 才能保證文件的正確傳送。收件人收到7位或更少位格式的郵件后,可以再轉換為8位的格式,這樣就可避免亂碼。

3、收發端用的EMAIL軟體和設置不同

一般EMAIL軟體的"附件"功能都可以自動對信件先進行編碼,然後送出。這樣只要收信人使用的EMAIL軟體(如Outlook XP等)能區別信件的編碼方式,即可自動將信件解碼。如果收發件人所用的EMAIL軟體默認配置不同、收發件人自己定製的一些選項不同,在收 到編碼的信件后,系統就未必能識別出信件所用的編碼方法,自然也無法自動解碼,這樣就會出現亂碼。

【解決辦法】:如果你用OE收中文郵件,看到的是一篇亂碼,可以查一下「查看」-「編碼」下,是否選了「簡體中文(GB2312)」,選對 了就不會有問題。

此外,你也可以用Winzip+IE來解碼,方法是:把亂碼郵件的內容,拷貝到剪貼板中,然後將其粘貼到記事本中,存為文本文件(例如 LI.txt),再將其後綴改為.uue(改為LI.uue),點擊此文件,會啟動Winzip,然後啟動IE,把Winzip中的001.txt文件拖到IE窗口中,就會顯 示郵件原來的內容,而不會看到亂碼。 
4、Email軟體不能識別郵件的編碼方法

郵件的編碼方式主要有:Uuencode、Base64 encode、QP-encode、BINHEX等。如果Email軟體不能識別郵件的編碼方法,就會顯示郵件時出現亂碼。因此,你可以根據郵件中的關鍵字元判 斷編碼方法,選取合適的解碼軟體進行解碼。

(1)、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文 件進行解壓,即可看到正確的內容。

(2)MIME/BASE64 encode編碼

該編碼方式將3個位元組(8位)用4個位元組(6位)表示,由於編碼后的內容是6位的,因此可避免第8位被截掉,大體格式為:

  MIME-Version:1.0

  Content-Type:text/plain; charset="us-ascii"

  Content-Transfer-Encoding:base64

Status:R SGmhQbF6pm6hSafapmK69Lj0pFexb6q+sXqsT6Skp OWrSKXzs

N3DRLFNrmGhQQ0Kq1+sTqq6vdCx
0LF6tFit07Ddw0ShRw0KDQqtuqX9p2m2RL

F6p9qoz6XOIE1Py3Jvc29mdCuiBJbnRlcm5ldCBN......。

特徵:亂碼前一般有如下幾部分"信頭":Content-Type(內容類型)、charset(字符集)及Content-Transfer-Encoding(內容傳輸亂碼方式 )。

解碼辦法:用EMAIL軟體,選擇編碼中BASE64 選項就可解碼,解碼後會消除亂碼。

(3)、BINHEX編碼

這種編碼方式大體格式為:

(This file must be converted with Binhex4.0)SGmhQbF6pm6hSafapmK69Lj0pFexb6qss

Tqq6vdCx
0LF6tFit07Ddw0ShRw0KDQqtuqX9p2m2RLF6p9qoz6XOIE…….

解碼辦法:用EMAIL軟體對它解碼;也可在EMAIL軟體中保存亂碼郵件,存為後綴為「.HQX」格式的文件,然後用WINZIP解碼展開。解碼後會 消除亂碼。

(4)、UTIF-7/UTIF-8編碼

它們是UNICODE的兩種轉換碼。


七、收信方如何避免郵件顯示亂碼?

收信方應該首先查找郵件的簽字欄或正文中,有無指明對方使用的漢字編碼類別;然後在Outlook XP「視圖」菜單下選中「編碼」,隨後將出現全部的漢字編碼,在其中選擇郵件所指明的一種。

如果收到的郵件中沒有指明所用的漢字編碼,則可以順序單擊選擇編碼,直到郵件正文顯示正確為止。如果你使用的是Netscape,則可在 Option菜單下的Document Encode中選擇相應的項目。

八、在跨語種操作系統間收發電子郵件,如何保證不會亂碼?

如果對方使用非中文系統,你給他發中文郵件時,他打開你發的中文郵件,就會出現亂碼。解決辦法有兩種:

1、用繪圖軟體書寫中文郵件

用畫筆等繪圖軟體書寫中文郵件,然後把中文郵件以GIF圖形格式保存,最後壓縮之、作為郵件附件發送。

運行繪圖軟體,在圖片中輸入文字,用GIF格式保存,將屬性置為黑白模式(以減少圖片體積),然後用WINZIP把它壓縮成ZIP格式,作為附 件在郵件中發送,這樣不管對方在何語言平台下,都不會出現亂碼,收信人不必去下載PDF文件閱讀器,閱讀起來也很方便。

2、使用專門的工具轉換和閱讀

EMAIL AID之類的工具可以把中文郵件轉換為AID格式文件,你把該格式文件發給對方,他再用EMAIL AID打開觀看即可。

EMAIL AID(UCWIN GOLD 1.0附帶的)可以把文本文件轉換為AID格式文件,大小隻比原TXT文件增加幾K。寫好中文郵件后,用文本格式存檔,然後你運行EMAIL AID,以AID格式保存,最後你把AID文件連同EMAIL AID軟體一起作為附件插在信中。對方收到信后,只需運行EMAIL AID,打開AID格式文件即可看到漢字,不管對方在何種語言平台下,都不會出現亂碼。

1

主題

77

帖子

22

積分

註冊會員

初過語言關(三級)

Rank: 1

積分
22
沙發
雷峰 發表於 2005-11-11 08:06 | 只看該作者

亂碼比較煩人

Kent:你好,非常感謝亂碼詳解。我的機器在瀏覽個別網頁時會出現一部份亂碼,如www.yetao.net的主頁面正常 ... 解決?謝謝![/SIZE]
回復 支持 反對

使用道具 舉報

36

主題

398

帖子

101

積分

貝殼網友一級

新新移民(六級)

Rank: 3Rank: 3

積分
101
3
netsking 發表於 2005-11-12 06:36 | 只看該作者
亂碼是很煩人的.有時很難解決.不過還是要謝謝KENT提供的方法.
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2025-8-24 07:18

快速回復 返回頂部 返回列表