php各种编码集详解和于啊状况下开展以 [php 字符集 显示]php各种编码集 字符集 显示 详解。

http://blog.cnsunrun.com/member/blog/blog\_info/30/84

字符是各种文字及符号的总称,包括各级邦文字、标点符号、图形符号、数字相当于。字符集是多独字符的集,字符集种类比较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、
GB
18030字符集、Unicode字符集等。计算机要标准之拍卖各种字符集文字,需要开展字符编码,以便计算机能够辨识与贮各种文字。


汉语文数据大,而且还分为简体中文和繁体中文两种植不同书规则之文字,而电脑最初是遵循英语单字节字符设计的,因此,对中文字符进行编码,是汉语信息交流的技艺基础。本文将如约字符集的时空各个讨论几种植典型的字符集,选取几种代表性的中文字符集,研究历史由来、特点、技术特色。

php各种编码集详解和当什么情况下展开应用

ASCII 字符集

  浏览次数:46  发表时:2011-06-11 23:40       

1.名的故

字符是各种文字与记的总称,包括各国国家文字、标点符号、图形符号、数字相当于。字符集是多只字符的会师,字符集种类比较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、
GB
18030字符集、Unicode字符集等。计算机要精确的拍卖各种字符集文字,需要进行字符编码,以便计算机能够辨识以及储存各种文字。

ASCII(American Standard Code for Information
Interchange,美国信相互换标准代码)是根据罗马字母表底一致学电脑编码系统。

汉语文数据大,而且还分为简体中文和繁体中文两栽不同书规则的文,而电脑最初是按部就班英语单字节字符设计的,因此,对汉语字符进行编码,是中文信息交流的技能基础。本文将随字符集的年华各个讨论几栽典型的字符集,选取几栽代表性的华语字符集,研究历史由来、特点、技术特点。

2.特点

ASCII 字符集

它主要用于展示现代英语与其余西欧语言。它是今最为通用的单字节编码系统,并一如既往于国际标准ISO
646。

1.称谓的来头

3.分包内容

ASCII(American Standard Code for Information
Interchange,美国信相互换标准代码)是冲罗马字母表底同模仿电脑编码系统。

控制字符:回车键、退格、换行键等。

2.特点

而是显示字符:英文大小写字符、阿拉伯数字与西文符号

她要用来展示现代英语和其它西欧语言。它是现行极其通用的单字节编码系统,并同于国际标准ISO
646。

4.技特色

3.涵盖内容

7各类(bits)表示一个字符,共128字符

控制字符:回车键、退格、换行键等。

5.ASCII恢弘字符集

但是显示字符:英文大小写字符、阿拉伯数字与西文符号

7各类编码的字符集只能支持128独字符,为了表示再多的欧洲时因此字符对ASCII进行了扩大,ASCII扩展字符集使用8号(bits)表示一个字符,共256字符。

4.术特色

ASCII扩展字符集比ASCII字符集扩充出的标记包括表格符号、计算符号、希腊字母和异样之拉丁符号。

7位(bits)表示一个字符,共128字符

GB2312 字符集

5.ASCII扩展字符集

 1.号的原由

7个编码的字符集只能支持128个字符,为了表示还多的欧洲不时因此字符对ASCII进行了扩大,ASCII扩展字符集使用8各类(bits)表示一个字符,共256字符。

GB2312又称作GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原来中国国家标准总局宣告,1981年5月1日实施。

ASCII扩展字符集比ASCII字符集扩充出的号包括表格符号、计算符号、希腊字母和新鲜之拉丁符号。 

2.特点

GB2312 字符集

GB2312是礼仪之邦国家标准的简体中文字符集。它所引用的方块字都罩99.75%之采取效率,基本满足了汉字的处理器处理需。在华夏次大陆与新加坡获取广泛运用。

 1.名号的缘故

3.富含内容

GB2312又称之为GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原本中国国家标准总局颁布,1981年5月1日实践。

GB2312收录简化汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共
7445
个图形字符。其中包6763只字,其中一级汉字3755独,二级汉字3008独;包括拉丁字母、希腊字母、日文平假名及片假名字母、俄报西里尔字母在内的682只全角字符。

2.特点

4.艺特色

GB2312是礼仪之邦国家标准的简体中文字符集。它所选用的方块字都蒙99.75%之以频率,基本满足了汉字之处理器处理需。在神州次大陆和新加坡获取广泛运用。

(1)分区表示:

3.带有内容

GB2312中针对所竣工汉字进行了“分区”处理,每区含有94只汉字/符号。这种代表方法为称为区位码。

GB2312收录简化汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共
7445
个图形字符。其中包括6763独汉字,其中一级汉字3755个,二级汉字3008单;包括拉丁字母、希腊字母、日文平假名及片假名字母、俄报西里尔字母在内的682独全角字符。 

各区包含的字符如下:01-09区为特殊符号;16-55区为一级汉字,按拼音排序;56-87区为二级汉字,按部首/笔画排序;10-15区和88-94区则免生出编码。

4.技巧特色

(2)双字节意味着

(1)分区表示:

个别单字节中前的字节为第一许节约,后面的字节为次字节。习惯及如第一许节为“高字节”
,而称第二许节为“低字节”。

GB2312中针对所收字进行了“分区”处理,每区含有94单汉字/符号。这种代表法也称为区位码。

“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上0xA0)。

各区包含的字符如下:01-09区为特殊符号;16-55区为一级汉字,按拼音排序;56-87区为二级汉字,按部首/笔画排序;10-15区与88-94区则无闹编码。

5.编码比喻

(2)双字节代表

因GB2312字符集的率先单汉字“啊”字也条例,它的区号16,位号01,则区位码是1601,在大多数电脑程序中,高字节和小字节分别加0xA0得到程序的汉字处理编码0xB0A1。计算公式是:0xB0=0xA0+16,
0xA1=0xA0+1。

有数个字节中前的字节为率先配节约,后面的字节为次字节。习惯及称第一许节为“高字节”
,而如第二配节为“低字节”。

BIG5 字符集

“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上0xA0)。

1.称谓的由

5.编码比喻

又如杀五码或五大码,1984年由于台湾财团法人信息工业策进会和五间软件企业大?
(Acer)、神通 (MiTAC)、佳佳、零壹 (Zero One)、大众
(FIC)创立,故称杀五码。

坐GB2312字符集的率先独汉字“啊”字也例,它的区号16,位号01,则区位码是1601,在大部分电脑程序中,高字节和低字节分别加0xA0得到程序的汉字处理编码0xB0A1。计算公式是:0xB0=0xA0+16,
0xA1=0xA0+1。

Big5码的产生,是坐就台湾不同厂商各自出不同之编码,如倚天码、IBM
PS55、王安码等,彼此不克匹配;另一方面,台湾政府即时没推出官方的汉字编码,而中华陆地的GB2312编码亦非发生收录繁体中文字。

BIG5 字符集

2.特点

1.名的因由

Big5字符集共圈定13,053只中文字,该字符集在中国台湾使用。耐人寻味的凡欠字符集重复地选用了区区个一律的字:“兀”(0xA461和0xC94A)、“??rdquo;(0xDCD1及0xDDFC)。

而如非常五码或五大码,1984年由于台湾财团法人信息工业策进会和五间软件商店宏碁
(Acer)、神通 (MiTAC)、佳佳、零壹 (Zero One)、大众
(FIC)创立,故称非常五码。

3.字符编码方法

Big5码的出,是为及时台湾不同厂商各自出不同之编码,如倚天码、IBM
PS55、王安码等,彼此不克匹配;另一方面,台湾政府当即尚无推出官方的汉字编码,而中华陆地的GB2312编码亦非闹收录繁体中文字。

Big5码使用了双配节储存方法,以个别只字节来编码一个许。第一独字节称为“高位字节”,第二个字节称为“低位字节”。高位字节的编码范围0xA1-0xF9,低位字节的编码范围0x40-0x7E及0xA1-0xFE。

2.特点

各编码范围对应之字符类型如下:0xA140-0xA3BF为标点符号、希腊字母和特殊符号,另外于0xA259-0xA261,存放了双音节度量衡单位用字:???????憝??;0xA440-0xC67E为常用汉字,先随笔划再按照部首排序;0xC940-0xF9D5吗潮常因此汉字,亦凡先行照笔划再按部首排序。

Big5字符集共录取13,053只中文字,该字符集在中国台湾使用。耐人寻味的凡拖欠字符集重复地引用了零星个相同的配:“兀”(0xA461跟0xC94A)、“嗀”(0xDCD1及0xDDFC)。

4.Big5 的局限性

3.字符编码方法

尽管Big5码内涵盖一万基本上只字符,但是并未设想社会及流通的真名、地名用配、方言用配、化学和生物科等用配,没有含日文平假名及片假名字母。

Big5码使用了双配节储存方法,以有限只字节来编码一个许。第一独字节称为“高位字节”,第二个字节称为“低位字节”。高位字节的编码范围0xA1-0xF9,低位字节的编码范围0x40-0x7E及0xA1-0xFE。

像台湾看看“着”为“著”的异体字,故没有用“着”字。康熙字典中之有的部首用配(如“亠”、“疒”、“?”、“?”等)、常见的人口名用字(如“??rdquo;、“煊”、“??rdquo;、“??rdquo;等)
也未曾引用到Big5里边。

各编码范围对应的字符类型如下:0xA140-0xA3BF为标点符号、希腊字母和特殊符号,另外于0xA259-0xA261,存放了双音节度量衡单位用字:兙兛兞兝兡兣嗧瓩糎;0xA440-0xC67E吧常用汉字,先以笔划再按部首排序;0xC940-0xF9D5啊不良常因此汉字,亦凡预先照笔划再遵照部首排序。

GB18030 字符集

4.Big5 的局限性

1.名称的原因

尽管Big5垛内含一万几近个字符,但是从未考虑社会及流通的姓名、地名用配、方言用配、化学与生物科等用配,没有包含日文平假名及片假名字母。

GB
18030底齐是GB18030-2000《信息交换用汉字编码字符集基本凑的扩张》,是我国政府让2000年3月17日披露的新的汉字编码国家标准,2001年8月31日晚当中国市面及揭示的软件要符合按专业

譬如台湾观“着”为“著”的异体字,故没有引用“着”字。康熙字典中之一部分部首用配(如“亠”、“疒”、“辵”、“癶”等)、常见的总人口名用字(如“堃”、“煊”、“栢”、“喆”等)
也并未选用至Big5之中。

2.特点

GB18030 字符集

GB
18030字符集标准的出面经过广泛介入和实证,来自国内外知名信息技术行业的公司,信息产业部和本国家质量技术监督局联手实施。

1.号的原故

GB
18030字符集标准解决汉字、日文假名、朝鲜语和华少数民族文字组成的大字符集计算机编码问题。该专业的字符总编码空间超过150万单编码位,收录了27484只字,覆盖中文、日文、朝鲜语和中华少数民族文字。满足中国次大陆、香港、台湾、日本与韩国齐名东亚地区信息交换多文种、大字量、多用、统一编码格式的要求。并且和Unicode
3.0本兼容,填补Unicode扩展字符字汇“统一汉字扩展A”的内容。并且和以前的国家字符编码标准(GB2312,GB13000.1)兼容。

GB
18030的完备是GB18030-2000《信息置换用汉字编码字符集基本凑的恢弘》,是我国政府于2000年3月17日揭晓之初的汉字编码国家标准,2001年8月31日后在中原市面达成发布之软件要符合按专业

3.编码方法

2.特点

GB
18030正规下单字节、双字节以及四字节老三栽方法对字符编码。单字节部分使用0×00至0×7F码(对应于ASCII码的相应码)。双字节片,首字节码从0×81至0×FE,尾字节码位分别是0×40顶0×7E暨0×80顶0×FE。四字节有的用GB/T
11383勿下的0×30交0×39当对双字节编码扩充的后缀,这样扩大的季许节编码,其范围为0×81308130至0×FE39FE39。其中第一、三单字节编码码位均为0×81至0×FE,第二、四独字节编码码位均为0×30届0×39。

GB
18030字符集标准的出名经过广大与和论证,来自国内外名牌信息技术行业之店家,信息产业部和原来国家质量技术监督局一块执行。

4.饱含的情节

GB
18030字符集标准解决汉字、日文假名、朝鲜语和中华少数民族文字组成的大字符集计算机编码问题。该规范的字符总编码空间超过150万只编码位,收录了27484独汉字,覆盖中文、日文、朝鲜语和华夏少数民族文字。满足中国新大陆、香港、台湾、日本与韩国等于东亚地区信息交换多文种、大字量、多用、统一编码格式的渴求。并且与Unicode
3.0版本兼容,填补Unicode扩展字符字汇“统一汉字扩展A”的情节。并且与以前的国字符编码标准(GB2312,GB13000.1)兼容。

双字节有些用内容重点不外乎GB13000.1尽CJK汉字20902个、有关标点符号、表意文字描述吻合13单、增补的字和部首/构件80只、双许节编码的欧元符号等。  四字节有些用了上述双字节字符之外的,包括CJK统一汉字扩充A在内的GB
13000.1遇之所有字符。

3.编码方法

Unicode字符集

GB
18030正经以单字节、双字节跟四字节老三种植方式对字符编码。单字节部分用0×00至0×7F码(对应于ASCII码的相应码)。双字节有些,首字节码从0×81至0×FE,尾字节码位分别是0×40交0×7E以及0×80到0×FE。四字节有应用GB/T
11383请勿利用的0×30至0×39当做对双字节编码扩充的后缀,这样扩大的季配节编码,其范围也0×81308130顶0×FE39FE39。其中第一、三单字节编码码位均为0×81至0×FE,第二、四只字节编码码位均为0×30到0×39。

1.号的因

4.带有的内容

Unicode字符集编码是Universal Multiple-Octet Coded Character Set
通用多八各项编码字符集的简称,是由于一个曰吧 Unicode 学术学会(Unicode
Consortium)的单位制定的字符编码系统,支持现今世界各种不同语言的封面文件的置换、处理同展示。该编码为1990年初始研发,1994年标准公布,最新版本是2005年3月31日的Unicode
4.1.0。

双字节有的用内容要概括GB13000.1整整CJK汉字20902单、有关标点符号、表意文字描述称13只、增补的方块字和部首/构件80独、双字节编码的欧元符号等。  四字节有的用了上述双字节字符之外的,包括CJK统一汉字扩充A在内的GB
13000.1丁的尽字符。

2.特征

Unicode字符集

Unicode是相同种植在微机达用的字符编码。它也各级种语言中的每个字符设定了统一以唯一的次向前制编码,以满足超过语言、跨平台拓展文本转换、处理的求。

1.名称的原由

3.编码方法

Unicode字符集编码是Universal Multiple-Octet Coded Character Set
通用多八号编码字符集的简称,是由于一个名为吧 Unicode 学术学会(Unicode
Consortium)的部门制定的字符编码系统,支持现今世界各种不同语言的封皮文件的置换、处理以及展示。该编码为1990年始研发,1994年正规宣告,最新版本是2005年3月31日的Unicode
4.1.0。

Unicode
标准始终以十六进制数字,而且在题时于前面加上前缀“U+”,例如字母“A”的编码为
004116 和字符“?”的编码为 20AC16。所以“A”的编码书写也“U+0041”。

2.特征 

4.UTF-8 编码

Unicode是同栽在计算机达使用的字符编码。它也各级种语言中的每个字符设定了合并而唯一的老二前行制编码,以满足超过语言、跨平台开展文本转换、处理的要求。

UTF-8凡Unicode的里边一个动方式。 UTF是 Unicode Translation
Format,即把Unicode转做某种格式的意。

3.编码方法

UTF-8便于不同的计算机中利用网络传输不同语言与编码的文,使得双字节底Unicode能够以现存的处理单字节的网及科学传输。

Unicode
标准一直用十六进制数字,而且当书写时在前方加上前缀“U+”,例如字母“A”的编码为
004116 和字符“?”的编码为 20AC16。所以“A”的编码书写也“U+0041”。

UTF-8用可转换长字节来储存
Unicode字符,例如ASCII字母继续行使1字节囤积,重音文字、希腊字母或西里尔字母等用2字节来囤,而常用之汉字就要使3字节。辅助平面字符则采取4字节。

4.UTF-8 编码 

5.UTF-16 和 UTF-32 编码

UTF-8是Unicode的中一个运用方法。 UTF是 Unicode Translation
Format,即把Unicode转做某种格式的意思。

UTF-32、UTF-16 和 UTF-8 是 Unicode
标准的编码字符集的字符编码方案,UTF-16 使用一个还是少于个未分配的 16
位代码单元的行列对 Unicode 代码点进行编码;UTF-32 即将每一个 Unicode
代码点表示为相同值的 32 位整数。

UTF-8便于不同的微机中以网络传输不同语言与编码的仿,使得双字节之Unicode能够以现存的处理单字节的网上正确传输。

 

UTF-8用可换长字节来储存
Unicode字符,例如ASCII字母继续使用1字节储存,重音文字、希腊字母或西里尔字母等采用2字节来囤积,而常用之方块字就要使3字节。辅助平面字符则运用4字节。

php教程
各种以乱码问题之解决方法

5.UTF-16 和 UTF-32 编码 

1) 使用 标签设置页面编码

UTF-32、UTF-16 和 UTF-8 是 Unicode
标准的编码字符集的字符编码方案,UTF-16 使用一个还是鲜只非分配的 16
位代码单元的班对 Unicode 代码点进行编码;UTF-32 即将每一个 Unicode
代码点表示也相同值的 32 位整数。

斯标签的打算是宣称客户端的浏览器用什么字符集编码显示该页面,xxx 可以啊
GB2312、GBK、UTF-8(和 MySQL 不同,MySQL 是
UTF8)等等。因此,大部分页迎可以这种艺术来告诉浏览器显示是页面的时段下什么编码,这样才未见面招致编码错误而有乱码。但是部分时候我们见面发觉发生矣即词还是蛮,不管
xxx 是哪一样栽,浏览器采用的始终犹是一律种植编码,这个情况本身后面会谈及。

 

请留意, 是属于 HTML 信息之,仅仅是一个声称,仅表明服务器已把 HTML
信息污染至了浏览器。

php 各种以乱码问题之缓解措施

2) header(“content-type:text/html; charset=xxx”);

1) 使用 标签设置页面编码

夫函数 header() 的作用是管括号里的音信发至 http
标头。如果括号内的内容吧中和遭遇所说那么,那作用与
标签基本相同,大家对待第一独看发现字符都差不多的。但是差的凡如有应声段函数,浏览器就会见永远使你所要求的
xxx
编码,绝对免会见无放话,因此是函数是颇有因此底。为什么会如此也?那就是得说说
http 标头和 HTML信息之出入了:

夫标签的作用是声称客户端的浏览器用啊字符集编码显示该页面,xxx 可以吗
GB2312、GBK、UTF-8(和 MySQL 不同,MySQL 是
UTF8)等等。因此,大部分页面可以行使这种艺术来喻浏览器显示这页面的时光使用什么编码,这样才不见面招致编码错误而来乱码。但是有上咱们会发现出了即词还是坏,不管
xxx 是呀一样栽,浏览器采用的总都是平等种编码,这个状态我后面会谈及。

http 标头是服务器因为 http 协议传送 HTML 信息及浏览器前所送出底字串。而
标签是属 HTML 信息的,所以 header() 发送的始末先到浏览器,通俗点就是
header() 的优先级高于 (不掌握但免得以这么讲)。假如一个 php
页面既来header(“content-type:text/html;charset=xxx”),又出,浏览器就只是认前者
http 标头而非认 meta 了。当然这函数只能于 php 页面内动。

请求留心, 是属于 HTML 信息之,仅仅是一个扬言,仅表明服务器都拿 HTML
信息污染至了浏览器。

一致也留给起一个题目,为什么前者就断起作用,而后人有时候就格外呢?这即是通下去要摆的Apache
的原因了。

2) header(“content-type:text/html; charset=xxx”);

3) AddDefaultCharset

斯函数 header() 的意向是把括号中的音发至 http
标头。如果括号里的情吧和被所说那么,那作用和
标签基本相同,大家对待第一只看发现字符都差不多的。但是不同的凡要是起立段函数,浏览器就见面永远以你所要求的
xxx
编码,绝对免会见无放话,因此此函数是充分有因此的。为什么会这么为?那就是得说说
http 标头和 HTML信息之出入了:

Apache 根目录的 conf 文件夹里,有总体 Apache 的布局文档 httpd.conf。

http 标头是服务器因为 http 协议传送 HTML 信息及浏览器前所送出底字串。而
标签是属 HTML 信息的,所以 header() 发送的内容先到浏览器,通俗点就是
header() 的先行级高于 (不清楚但免得以这么讲)。假如一个 php
页面既来header(“content-type:text/html;charset=xxx”),又来,浏览器就独自认前者
http 标头而不认 meta 了。当然者函数只能以 php 页面内以。

故而文本编辑器打开 httpd.conf,第 708 行(不同版本可能两样)有
AddDefaultCharset
xxx,xxx为编码名称。这行代码的意:设置任何服务器内之网页文件 http
标头里的字符集为而默认的 xxx字符集。有应声行,就相当给给每个文件还加了一条龙
header(“content-type2019亚洲杯:text/html; charset=xxx”)。这下虽明白为什么明明
设置了是 utf-8,可浏览器始终用 gb2312 的由。

同一为留下有一个问题,为什么前者就断起作用,而后人有时候就是怪呢?这就是是连下要出口的Apache
的故了。

一旦网页里生 header(“content-type:text/html;
charset=xxx”),就把默认的字符集改呢而设置的字符集,所以是函数永远有因此。如果拿
AddDefaultCharset xxx 前面加个”#”,注释掉就句,而且页面里无含有
header(“content-type…”),那这时刻即便轮到 meta 标签由作用了。

3) AddDefaultCharset

下面列有以上的先顺序:

Apache 根目录的 conf 文件夹里,有任何 Apache 的布文档 httpd.conf。

 

因此文本编辑器打开 httpd.conf,第 708 行(不同版本可能不同)有
AddDefaultCharset
xxx,xxx为编码名称。这行代码的意思:设置总体服务器内的网页文件 http
标头里之字符集为卿默认的 xxx字符集。有这行,就一定给受每个文件还加以了一条龙
header(“content-type:text/html; charset=xxx”)。这下就懂得怎么明明
设置了是 utf-8,可浏览器始终用 gb2312 的原由。

header(“content-type:text/html; charset=xxx”)

假若网页里生 header(“content-type:text/html;
charset=xxx”),就把默认的字符集改呢汝设置的字符集,所以这函数永远有因此。如果拿
AddDefaultCharset xxx 前面加个”#”,注释掉就句,而且页面里无包含
header(“content-type…”),那这上即便轮至 meta 标签由作用了。

.. AddDefaultCharset xxx

下列有上述之预先顺序:

..

header(“content-type:text/html; charset=xxx”)

设你是 web
程序员,建议于您的每个页面都加个header(“content-type:text/html;charset=xxx”),这样尽管可保证她于另服务器都能够是显示,可移植性也比较强。

.. AddDefaultCharset xxx

4) php.ini 中的 default_charset 配置:

..

php.ini 中的 default_charset = “gb2312” 定义了 php
的默认语言字符集。一般推荐注释掉此行,让浏览器根据网页头被的 charset
来机关选择语言而未做一个强制性的规定,这样虽可以以一块儿服务器上提供多种语言的网页服务。

假使您是 web
程序员,建议吃您的每个页面还加个header(“content-type:text/html;charset=xxx”),这样就足以保其当旁服务器都能够科学显示,可移植性也于高。

4) php.ini 中的 default_charset 配置:

php.ini 中的 default_charset = “gb2312” 定义了 php
的默认语言字符集。一般推荐注释掉此行,让浏览器根据网页头被之 charset
来机关选择语言而不做一个强制性的规定,这样虽足以以联合服务器上提供多种语言的网页服务。

相关文章