亂碼

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
用Windows-1252編碼編譯UTF-8編碼的「亂碼」(ja:文字化け日文維基百科條目

亂碼指的是電腦系統不能顯示正確的字符而顯示其他無意義的字符或空白,通常是使用非預期的字符編碼對文本進行解碼的結果[1]。這樣所顯示出來的文字統稱為亂碼。此外,將非文本的數據以文本方式解碼得到的無意義字符也稱為亂碼。

由於缺少字體或字體中缺少字形而導致字形渲染失敗是一個不同的問題,文字通常顯示為虛缺號(□)或者十六進制編碼,不應與亂碼混淆。

例如,微軟編譯器產生「烫烫烫」「屯屯屯」亂碼,編碼字符集轉換產生的「锟斤拷」「毺絞銝」「脣銝餌」亂碼[2]。對於重複的字節串0xCC,根據採用編碼的不同,簡體GBK會顯示「烫烫烫」,台灣BIG-5會顯示「昍昍昍」,日本Shift-JIS會顯示「フフフフフフ」。

可能的產生原因[編輯]

  • 一般是軟件程序解碼錯誤,如瀏覽器把GBK碼當成是Big5碼顯示,或電子郵件程序把對方傳來的郵件錯誤解碼。如果在發送時編碼錯誤,收件者的電郵程序不能解碼,需要寄件者的電郵程序重新編碼再寄。
  • 字體檔案(font file)不對。
  • 來源編碼錯誤,或文件受到破壞。
  • 一種語言版本的操作系統安裝了另外一種語言版本的應用程序,或者應用程序安裝的補丁的語言版本與應用程序原來安裝的語言版本不一致。
  • 早期單字節的應用程序在打開雙字節語言的文件時不能正確識別文字的分割,在換行的地方把一個字從中分成兩段,導致緊接在後面的整個一行全部都是亂碼。
  • 低階版本的應用程序不能識別高階版本的程序創建的文件。

可能的解決方法[編輯]

  • 轉換編碼:一般可試Big5GBKUTF-8Unicode的一種應用方式,包括世界上主要的文字)三種,如涉及的不是中文,可以再試JIS日文)、KR韓文)及其他文字編碼。徹底的解決方法是雙方使用同一編碼系統,如UTF-8,只要用戶有對應的字體檔案就可以正確的顯示文字。實際上要統一編碼系統還要克服各種客觀的困難,現時只有靠軟件(如Microsoft AppLocale)有更高的解碼能力。
  • 因繁簡編碼不通用導致的亂碼,於系統的其他日期、時間與地區設定將非Unicode程式的使用語言更改為繁體/簡體或能解決。
  • 轉換字體:如果解碼正確而出現錯誤文字,有可能是字體檔案沒有相對應的字符,可嘗試轉換字體檔案。
  • 如果本來該顯示出漢字的,卻變成數字,如最欣賞相中拉(最欣賞相中拉)等Unicode代碼,可以把這部分抄出來,獨立存儲成html檔, 再用瀏覽器打開解碼,或直接用JavaScript解讀︰
    alert("最欣賞相中拉");
    
  • 其他:有時解碼的方法要視乎軟件和實際環境,及不斷嘗試才能解碼,特別在不知本來是用哪種編碼系統時。
  • 有時輸入漢字時也會出現亂碼,不過這種情況很少出現。最大原因是輸入法所用的編碼,與經編輯器輸出的字體編碼不符所致,可嘗試轉換字體來解決。例如把GBK編碼的輸入法裝到只支援Big5的系統上,是不能正確顯示所輸入的字的;必需選擇Big5編碼的輸入法,或把輸入法裝到GBK的系統中。
  • 外文所引致的亂碼,只有轉換支援某外文的字體檔案才能解決。

參見[編輯]

參考[編輯]

  1. ^ King, Ritchie. Will unicode soon be the universal code? [The Data]. IEEE Spectrum. 2012, 49 (7): 60. doi:10.1109/MSPEC.2012.6221090. 
  2. ^ "烫烫烫屯屯屯" 那些事. 知乎專欄. [2022-10-15]. (原始內容存檔於2020-10-20) (中文). 

外部連結[編輯]