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

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


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

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

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

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

ASCII 字符集

1.名的原因

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

2.特点

它们主要用于展示现代英语和其他西欧语言。它是今日极度通用的单字节编码系统,并一如既往于国际标准ISO
646。

3.分包内容

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

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

4.技术特点

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

5.ASCII扩张字符集

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

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

GB2312 字符集

 1.称呼的因

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

2.特点

GB2312是华夏国家标准的简体中文字符集。它所用的方块字都埋99.75%底使频率,基本满足了字之电脑处理要。在炎黄新大陆与新加坡拿走广泛采取。

3.暗含内容

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

4.技术特点

(1)分区表示:

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

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

(2)双字节表示

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

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

5.编码比方

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

BIG5 字符集

1.名号的缘由

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

Big5码的发,是以当时台湾差厂商各自出不同的编码,如倚天码、IBM
PS55、王安码等,彼此不可知匹配;另一方面,台湾政府即时从未有过推出官方的汉字编码,而中华新大陆的GB2312编码亦莫生收录繁体中文字。

2.特点

Big5字符集共圈定13,053单中文字,该字符集在中国台湾使用。耐人寻味之凡该字符集重复地选用了少于个一律之字:“兀”(0xA461与0xC94A)、“嗀”(0xDCD1及0xDDFC)。

3.字符编码方法

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

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

4.Big5 的局限性

尽管Big5码内富含一万几近个字符,但是并未设想社会及流通的全名、地名用配、方言用配、化学和生物科等之所以配,没有含日文平假名及片假名字母。

譬如说台湾看“着”为“著”的异体字,故没有选用“着”字。康熙字典中之片部首用配(如“亠”、“疒”、“辵”、“癶”等)、常见的口名用字(如“堃”、“煊”、“栢”、“喆”等)
也尚未收录到Big5间。

GB18030 字符集

1.号的案由

GB
18030的全是GB18030-2000《信息置换用汉字编码字符集基本凑的扩张》,是我国政府给2000年3月17日宣告之初的汉字编码国家标准,2001年8月31日后以中国市面及揭晓之软件要符合按专业

2.特点

GB
18030字符集标准的出台经过大与与实证,来自国内外名信息技术行业的店,信息产业部和原先国家质量技术监督局一头实施。

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

3.编码方法

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。

4.含的始末

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

Unicode字符集

1.号的缘由

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

2.特征 

Unicode是平等种在微机及采取的字符编码。它也各级种语言中的每个字符设定了统一以唯一的亚前行制编码,以满足超过语言、跨平台拓展文本转换、处理的渴求。

3.编码方法

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

4.UTF-8 编码 

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

UTF-8便于不同的微处理器之间下网络传输不同语言微生物及编码的文,使得双字节的Unicode能够在现存的拍卖单字节的体系上是传输。

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

5.UTF-16 和 UTF-32 编码 

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

 

php 各种以乱码问题的化解办法

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

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

伸手留意, 是属于 HTML 信息的,仅仅是一个宣称,仅表明服务器都拿 HTML
信息污染至了浏览器。

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

夫函数 header() 的用意是把括号里的音信发至 http
标头。如果括号内的情也文遭遇所说那么,那作用以及
标签基本相同,大家对待第一单看发现字符都差不多的。但是不同的凡如出这段函数,浏览器就会见永远以你所要求的
xxx
编码,绝对免会见无听话,因此此函数是死有因此底。为什么会这样吗?那即便得说说
http 标头和 HTML信息的歧异了:

http 标头是服务器因为 http 协议传送 HTML 信息到浏览器前所送出的字串。而
标签是属于 HTML 信息之,所以 header() 发送的内容先到达浏览器,通俗点就是
header() 的先级高于 (不晓但免可以这样说)。假如一个 php
页面既来header(“content-type:text/html;charset=xxx”),又起,浏览器就惟有认前者
http 标头而无认 meta 了。当然者函数只能以 php 页面内使用。

平为养出一个问题,为什么前者就绝对起作用,而后者有时候就算挺也?这即是连接下去要说话的Apache
的来由了。

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”),就把默认的字符集改呢您设置的字符集,所以是函数永远有因此。如果拿
AddDefaultCharset xxx 前面加个”#”,注释掉这句,而且页面里不含有
header(“content-type…”),那这时节便轮到 meta 标签由作用了。

下列有以上的事先顺序:

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

.. AddDefaultCharset xxx

..

假使您是 web
程序员,建议让您的每个页面还加个header(“content-type:text/html;charset=xxx”),这样就是得保它在外服务器都能够对显示,可移植性也正如大。

4) php.ini 中的 default_charset 配置:

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

相关文章