字符的编码问题


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。

本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/guopengzhang/archive/2009/10/03/4628617.aspx
相关文章
相关标签/搜索