Java 程式碼中出現菱形亂碼?
Java程式碼中出現菱形亂碼,一般情況是因為字元集問題,例如Java檔案是GBK編碼的,但是編輯用UTF-8編碼開啟這個Java檔案就顯示這種亂碼,解決方法:將編輯器的編碼改為和Java檔案一致的編碼即可。
編碼
#編碼是訊息從一種形式或格式轉換為另一種形式的過程,也稱為電腦程式語言的代碼簡稱編碼。用預先規定的方法將文字、數字或其它物件編成數碼,或將資訊、資料轉換成規定的電脈衝訊號。編碼在電子電腦、電視、遙控器和通訊等方面廣泛使用。編碼是訊息從一種形式或格式轉換為另一種形式的過程。解碼,是編碼的逆過程。
GB編碼標準中,比較常用的是GB2312和GBK兩種,GB2312是GBK的一個子集,GB2312編碼範圍是0xA1A1 - 0xFEFE ,如果純粹的GB2312編碼,處理起來是十分簡單的,但處理GBK字元集時有些小的提示,先說說GBK編碼的標準吧:
GBK 採用雙位元組表示,總體編碼範圍為8140-FEFE,首字節在81-FE 之間,尾位元組在40-FE 之間,剔除xx7F 一條線。總計 23940 個碼位,共收入 21886 個漢字和圖形符號,其中漢字(包括部首和構件)21003 個,圖形符號 883 個。
編碼分類
1. 漢字區。包括:
a. GB 2312 漢字區。即 GBK/2: B0A1-F7FE。收錄 GB 2312 漢字 6763 個,依原順序排列。
b. GB 13000.1 擴充漢字區。包括:
(1) GBK/3: 8140-A0FE。收錄 GB 13000.1 中的 CJK 漢字 6080 個。
(2) GBK/4: AA40-FEA0。收錄 CJK 漢字和增補的漢字 8160 個。
CJK 漢字在前,按 UCS 程式碼大小排列;增補的漢字(包括部首和構件)在後,按《康熙字典》的頁碼/字位排列。
2. 圖形符號區。包括:
a. GB 2312 非漢字符號區。即 GBK/1: A1A1-A9FE。其中除 GB 2312 的符號外,
還有 10 個小寫羅馬數字和 GB 12345 增補的符號。計號 717 個。
b. GB 13000.1 擴充非漢字區。即 GBK/5: A840-A9A0。 BIG-5 非漢字符號、結構符號和「○」排列在此區。計符號 166 個。
3. 使用者自訂區:分為(1)(2)(3)三個小區。
(1) AAA1-AFFE,碼位 564 個。
(2) F8A1-FEFE,碼位 658 個。
(3) A140-A7A0,碼位 672 個。
第(3)區儘管對使用者開放,但限制使用,因為不排除未來在此區域增補新字元的可能性。
這裡有幾個小技巧:
一、在php中,字元編碼是按所發送的編碼為準的,因此使用的就是使用者輸入的編碼,不會自動改變,但在asp中,預設的編碼是unicode,這樣我們很容易就能得到gbk->unicode的編碼對照表,這樣即使在毫無基礎庫的情況下也能很容易的實現gbk到utf-8的轉換了;
二、由於GBK是高位最低數值是0x40,即是64,因此,有時候組織一些涉及中文的字符串時,分割字符最好用64之前的ascii碼,這樣在任何情況下替換或分割都不會出現亂碼,比較常用的是","、";"、":"、" "、" "、" ",這些字元永遠不會為gb編碼添亂
推薦教學:《Java教學》
以上是Java 程式碼中出現菱形亂碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!