charset=iso-8859-1和charset=gb2312和charset=utf-8等等有什麼不同

 網頁製作中遇到的編碼,亂碼問題之一:charset=iso-8859-1和charset=gb2312有什麼不同?

 

charset=iso-8859-1是西歐的編碼,代表說明網站是採用的編碼是英文;

charset=gb2312代表說明網站是採用的編碼是簡體中文;

charset=utf-8代表世界通用的語言編碼;

charset=big5代表說明網站是採用的編碼是繁體中文;

charset=euc-kr代表說明網站是採用的編碼是韓文;

......等等有很多編碼。

最常用到的是charset=gb2312、charset=iso-8859-1和charset=utf-8

charset=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 編碼”的特點:
1. 這些“ANSI 編碼標準”都只能處理各自語言範圍之內的 UNICODE 字符。
2. “UNICODE 字符”與“轉換出來的字節”之間的關係是人爲規定的。

3、UTF-8,UTF-16,UnicodeBig
與“ANSI 編碼”類似的,把字符串通過 UNICODE 編碼轉化成“字節串”時,一個 UNICODE 字符可能轉化成一個字節或多個字節。
與“ANSI 編碼”不同的是:
1. 這些“UNICODE 編碼”能夠處理所有的 UNICODE 字符。
2. “UNICODE 字符”與“轉換出來的字節”之間是可以通過計算得到的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章