gb2312和utf-8等字符集與編碼

最近在美化一個java項目,修改後端寫的jsp頁面,遇到了編碼問題。包括類似這樣的:

<?xml version="1.0" encoding="GB2312"?>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
username= new String(usrename.getBytes("iso-8859-1"),"GB2312");
<%@ page contentType="text/html;charset=GBK"%>

編碼的不一致導致我在新添加內容的時候一不小心就會出現jsp亂碼的情況,解決方法就是改需要改的頁面編碼爲utf-8即可,暫時沒有問題。
以下內容來自百度知道。
各個國家和地區所制定的不同 ANSI 編碼標準中,都只規定了各自語言所需的“字符”。比如:漢字標準(GB2312)中沒有規定韓國語字符怎樣存儲。這些 ANSI 編碼標準所規定的內容包含兩層含義:

  1. 使用哪些字符。也就是說哪些漢字,字母和符號會被收入標準中。所包含“字符”的集合就叫做“字符集”。
  2. 規定每個“字符”分別用一個字節還是多個字節存儲,用哪些字節來存儲,這個規定就叫做“編碼”。
    各個國家和地區在制定編碼標準的時候,“字符的集合”和“編碼”一般都是同時制定的。因此,平常我們所說的“字符集”,比如:GB2312, GBK, JIS 等,除了有“字符的集合”這層含義外,同時也包含了“編碼”的含義。
    “UNICODE 字符集”包含了各種語言中使用到的所有“字符”。用來給 UNICODE 字符集編碼的標準有很多種,比如:UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig 等。
    1、ISO-8859-1:
    最簡單的編碼規則,每一個字節直接作爲一個 UNICODE 字符。比如,[0xD6, 0xD0] 這兩個字節,通過 iso-8859-1 轉化爲字符串時,將直接得到 [0x00D6, 0x00D0] 兩個 UNICODE 字符,即 “ÖД。
    反之,將 UNICODE 字符串通過 iso-8859-1 轉化爲字節串時,只能正常轉化 0~255 範圍的字符。
    2、GB2312,BIG5,Shift_JIS,ISO-8859-2
    把 UNICODE 字符串通過 ANSI 編碼轉化爲“字節串”時,根據各自編碼的規定,一個 UNICODE 字符可能轉化成一個字節或多個字節。
    反之,將字節串轉化成字符串時,也可能多個字節轉化成一個字符。比如,[0xD6, 0xD0] 這兩個字節,通過 GB2312 轉化爲字符串時,將得到 [0x4E2D] 一個字符,即 ‘中’ 字。
    “ANSI 編碼”的特點:
  3. 這些“ANSI 編碼標準”都只能處理各自語言範圍之內的 UNICODE 字符。
  4. “UNICODE 字符”與“轉換出來的字節”之間的關係是人爲規定的。
    3、UTF-8,UTF-16,UnicodeBig
    與“ANSI 編碼”類似的,把字符串通過 UNICODE 編碼轉化成“字節串”時,一個 UNICODE 字符可能轉化成一個字節或多個字節。
    與“ANSI 編碼”不同的是:
  5. 這些“UNICODE 編碼”能夠處理所有的 UNICODE 字符。
  6. “UNICODE 字符”與“轉換出來的字節”之間是可以通過計算得到的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章