charset=iso-8859-1和charset=gb2312有什麼不一樣?
2009年09月19日 星期六 10:09
charset=iso-8859-1是西歐的編碼,表明說明網站是採用的編碼是英文;
charset=gb2312表明說明網站是採用的編碼是簡體中文;
charset=utf-8表明世界通用的語言編碼;
charset=big5表明說明網站是採用的編碼是繁體中文;
charset=euc-kr表明說明網站是採用的編碼是韓文;
......等等有不少編碼。
最經常使用到的是charset=gb23十二、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 等。
一、ISO-8859-1:
最簡單的編碼規則,每個字節直接做爲一個 UNICODE 字符。好比,[0xD6, 0xD0] 這兩個字節,經過 iso-8859-1 轉化爲字符串時,將直接獲得 [0x00D6, 0x00D0] 兩個 UNICODE 字符,即 "ÖÐ"。
反之,將 UNICODE 字符串經過 iso-8859-1 轉化爲字節串時,只能正常轉化 0~255 範圍的字符。
二、GB2312,BIG5,Shift_JIS,ISO-8859-2
把 UNICODE 字符串經過 ANSI 編碼轉化爲「字節串」時,根據各自編碼的規定,一個 UNICODE 字符可能轉化成一個字節或多個字節。
反之,將字節串轉化成字符串時,也可能多個字節轉化成一個字符。好比,[0xD6, 0xD0] 這兩個字節,經過 GB2312 轉化爲字符串時,將獲得 [0x4E2D] 一個字符,即 '中' 字。
「ANSI 編碼」的特色:
1. 這些「ANSI 編碼標準」都只能處理各自語言範圍以內的 UNICODE 字符。
2. 「UNICODE 字符」與「轉換出來的字節」之間的關係是人爲規定的。
三、UTF-8,UTF-16,UnicodeBig
與「ANSI 編碼」相似的,把字符串經過 UNICODE 編碼轉化成「字節串」時,一個 UNICODE 字符可能轉化成一個字節或多個字節。
與「ANSI 編碼」不一樣的是:
1. 這些「UNICODE 編碼」可以處理全部的 UNICODE 字符。
2. 「UNICODE 字符」與「轉換出來的字節」之間是能夠經過計算獲得的。
如何相互轉換呢?
最好用記事本打開文件,修改字符編碼爲utf-8,而後另存爲,選擇編碼爲utf-8。