Java 應用中,各類編碼問題知識點梳理

參考資料:java

java 類裏判斷字符串是iso-8859-1仍是gb2312,utf-8,gbk等,判斷編碼類型瀏覽器

一、判斷字符串編碼類型

System.out.println(java.nio.charset.Charset.forName("GB2312").newEncoder().canEncode("漢字"));
System.out.println(java.nio.charset.Charset.forName("ISO-8859-1").newEncoder().canEncode("漢字"));

結果:網絡

true
false

GBK、GB23十二、UTF-8裏邊都有漢字編碼,因此判斷時老是返回true.編碼

二、字符集順序

從小到大:spa

ISO-8859-一、GB23十二、GBK、UTF-8

    國際標準組織(ISO)定義了幾個不一樣的字符集,它們是在ASCII碼基礎上增長了其餘語言和地區須要的字符code

    其中最突出的是ISO-8859-1,一般叫作Latin-1. Latin-1包括了書寫全部西方歐洲語言不可缺乏的附加字節,其中0~127的字符與ASCII碼相同。blog

三、獲取某個字符或漢字在utf-8,gbk,gb2312,iso8859-1下的十六進制,八進制,十進制,二進制的表示

參考資料:字符在utf-8,gbk,gb2312,iso8859-1下的編碼實驗utf-8

四、字符編碼在計算機中真正的表示形式?

二進制字符串

五、ISO-8859-1

    iso-8859-1是JAVA網絡傳輸使用的標準字符集,而gb2312是標準中文字符集,get

    當你做出提交表單等須要網絡傳輸的操做的時候,就須要把 iso-8859-1轉換爲gb2312字符集顯示,不然若是按瀏覽器的gb2312格式來解釋iso-8859-1字符集的話,因爲2者不兼容,因此會是亂碼.

六、GB2312

    簡體中文編碼標準。

    對於GB2312,漢字是雙字節的。所謂雙字節是指一個雙字要佔用兩個Byte的位置(即16位),分別稱爲高位和低位。

    中國規定的漢字編碼爲GB2312,這是強制性的,目前幾乎全部的能處理中文的應用程序都支持GB2312。

    GB2312包括了一二級漢字和9區符號,高位從0xa1到0xfe,低位也是從0xa1到0xfe,其中,漢字的編碼範圍爲0xb0a1到0xf7fe。

漢字的另一種編碼方式:GBK

    GBK編碼方式是一份規範,不是強制的(GB2312爲強制性編碼方式)。GBK提供了20902個漢字,它兼容GB2312,編碼範圍爲0x8140到0xfefe。GBK中的全部字符均可以一一映射到Unicode 2.0.

七、GBK

    由於GB2312只有簡體字,爲了擴充,便有了GBK編碼標準。它是GB2312的超集。也就是說,GB2312編碼的字符,均可以用GBK的方式解讀。Windows默認字符集爲GBK。

    GBK編碼方式是一份規範,不是強制的(GB2312爲強制性編碼方式)。GBK提供了20902個漢字,它兼容GB2312,編碼範圍爲0x8140到0xfefe。GBK中的全部字符均可以一一映射到Unicode 2.0.

八、UTF-八、UTF-1六、Unicode編碼形式

Utf-8是8bit的,UTF-16是16bit,Unicode是UTF-16的形式。

    UTF-16 或 Unicode 是 16-bit 固定長度的編碼,並無比 Big5 或 GB2312 碼提供更大的容納空間。

    而 8-bit 不定長 (variable-length) 的編碼每一箇中文字使用 3 個位元組 (byte)。 這意味着使用 UTF-8 編碼的 XML 文件會比使用 Big5 碼的文件大上 50%。可是假如使用 ASCII 碼的標示 (Markup),文件就不會大這麼多了。 標示大約會佔文件的 50%。可能要使文件大小減小的方式就是採用 文件壓縮了。

九、GB23十二、UTF-8中,漢字分別佔多少字節?

    GB2312中,漢字佔2字節。

    UTF-8編碼中,佔3字節(3位元組)。

十、ISO-8859-1和GB2312之間的轉換

    一般異種語言之間的轉換是經過Unicode來完成的。

    假設有兩種不一樣的語言A和B轉換的步驟爲

    先把A轉化爲Unicode,再把Unicode轉化爲B

Eg:

    有GB2312中有一個漢字「李「,其編碼爲「C0EE」,欲轉化爲ISO8859-1編碼。

步驟爲:

    1)、把「李」字轉化爲Unicode,獲得 「674E」,

    2)、把「674E」轉化爲ISO8859-1字符。

    固然,這個映射不會成功,由於ISO8859-1中根本就沒有與「674E」對應的字符。

十一、瀏覽器表單提交內容亂碼的緣由?

    iso-8859-1是JAVA網絡傳輸使用的標準字符集,而gb2312是標準中文字符集,

    當你做出提交表單等須要網絡傳輸的操做的時候,就須要把 iso-8859-1轉換爲gb2312字符集顯示,不然若是按瀏覽器的gb2312格式來解釋iso-8859-1字符集的話,因爲2者不兼容,因此會是亂碼.

相關文章
相關標籤/搜索