參考資料: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
二進制字符串
iso-8859-1是JAVA網絡傳輸使用的標準字符集,而gb2312是標準中文字符集,get
當你做出提交表單等須要網絡傳輸的操做的時候,就須要把 iso-8859-1轉換爲gb2312字符集顯示,不然若是按瀏覽器的gb2312格式來解釋iso-8859-1字符集的話,因爲2者不兼容,因此會是亂碼.
簡體中文編碼標準。
對於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.
由於GB2312只有簡體字,爲了擴充,便有了GBK編碼標準。它是GB2312的超集。也就是說,GB2312編碼的字符,均可以用GBK的方式解讀。Windows默認字符集爲GBK。
GBK編碼方式是一份規範,不是強制的(GB2312爲強制性編碼方式)。GBK提供了20902個漢字,它兼容GB2312,編碼範圍爲0x8140到0xfefe。GBK中的全部字符均可以一一映射到Unicode 2.0.
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%。可能要使文件大小減小的方式就是採用 文件壓縮了。
GB2312中,漢字佔2字節。
UTF-8編碼中,佔3字節(3位元組)。
一般異種語言之間的轉換是經過Unicode來完成的。
先把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者不兼容,因此會是亂碼.