一、页面编码,数据库中的字符集编码问题

一、页面编码,用header或meta实现PHP页面编码的区别,我们可以利用header方法来指定PHP页面的页面编码,通常情况以上代码放在php页面的首页,数据库中的字符集编码问题,作为数据库字符集编码

二、数据库编码
PHP 程序在查询数据库以前,首先推行 mysql_query(“SET NAMES xxxx”State of Qatar;此中xxxx 是您网页的编码(charset=xxxx卡塔尔(قطر‎,倘若网页中 charset=utf8,则
xxxx=utf8,借使网页中
charset=gb2312,则xxxx=gb2312,大致拥有WEB程序,都有生机勃勃段连接数据库的共用代码,放在三个文件里,在这里文件里,参加mysql_query(“set names”卡塔尔(قطر‎就足以了。

在PHP中,大家能够利用header方法来钦赐PHP页面包车型大巴页面编码,能够是UTF,也能够是GBK编码,具体方法如下:

定位难点时常用的技巧 固定中文编码难点普通使用最笨的也是最得力的措施―在你以为有疑虑的程序管理后打字与印刷字符串的内码。通过打字与印刷字符串的内码,你能够发掘曾几何时粤语字符被转形成Unicode,哪天Unicode 被撤回中文内码,曾几何时贰个国语字成了八个Unicode
字符,哪一天中文字符串被转成了少年老成串问号,曾几何时中文字符串的要职被截掉了……

其黄金时代函数header(卡塔尔(قطر‎的功效是把括号里面包车型地铁信息发到http标头。

php页面为utf编码
header(“Content-type: text/html; charset=utf-8″);

取用合适的样板字符串也拉动区分难题的品类。如:”aa啊 aa?@aa”
等中国和英国国首相间,GB、GBK特征字符均有的字符串。平日的话,德语字符无论怎么转移或管理,都不会失真(如若遇到了,能够品味着扩展三回九转的加泰罗尼亚语字母长度卡塔尔(قطر‎。

  2、html页面的编码,指的是那少年老成行的装置:
<meta http-equiv=”Content-Type” content=”text/html; charset=gbk”
/>

php页面为gbk编码
header(“Content-type: text/html; charset=gb2312″);

数据库中的字符集编码难题 风行的关周密据库系统都支持数据库字符集编码,也正是说在开创数据库时方可钦点它和谐的字符集设置,数据库的数量以钦命的编码格局积攒。当应用程序访谈数据时,在入口和出口处都会有字符集编码的转变。对于华语数据,数据库字符编码的装置相应保险数据的完整性。GB2312、GBK、UTF-8
等都以可选的数据库字符集编码;当然大家也能够筛选 ISO8859-1
(8-bit卡塔尔,只是我们得在应

Apache 根目录的 conf 文件夹里,有一切Apache的布局文书档案httpd.conf。

php页面为big5编码
header(“Content-type: text/html; charset=big5″);

如果网页里有 header(“content-type:text/html;
charset=xxx”State of Qatar,就把暗中同意的字符集改为您设置的字符集,所以这些函数永世有用。倘若把
AddDefaultCharset xxx 前边加个”#”,注释掉那句,何况页面里不含
header(“content-type…”卡塔尔(قطر‎,那此时就轮到 meta 标签起效果了。

关于那句AddDefaultCharset
xxx,要不要疏解就众说纷纷了。反正自身是注释掉了,然则自个儿写页子也要写header(State of Qatar,便于放到服务器上能符合规律呈现。

二、数据库编码

PHP 程序在查询数据库早前,首先试行 mysql_query(“SET NAMES xxxx”卡塔尔国;当中xxxx 是您网页的编码(charset=xxxx卡塔尔国,尽管网页中 charset=utf8,则
xxxx=utf8,即便网页中
charset=gb2312,则xxxx=gb2312,差不离全数WEB程序,都有风姿罗曼蒂克段连接数据库的公共代码,放在叁个文书里,在此文件里,参预mysql_query(“set names”卡塔尔(قطر‎就可以了。

SET NAMES 展现客商端发送的 SQL 语句中应用什么字符集。因而,SET NAMES
‘utf-8′语句告诉服务器“以往从这么些客户端传来的新闻运用字符集utf-8”。它还为服务器发送回客户端的结果钦赐了字符集。(比方,假诺你利用贰个SELECT语句,它意味着列值使用了何等字符集。)

PHP页面编码统后生可畏

MySQL数据库编码、html页面编码、PHP或html文件自己编码要全部相近。
1、MySQL数据库编码:创建数据库时钦命编码(如gbk_chinese_ci卡塔尔,建设构造数据表、创立字段、插入数据时毫无内定编码,会自行三番五回数据库的编码。
数据库连接时,也许有编码,能够在接连完数据库后,推行
mysql_query(‘SET NAMES gbk’卡塔尔国;//将gbk换来你的编码,如utf8。

2、html页面包车型大巴编码,指的是那大器晚成行的设置:
<meta http-equiv=”Content-Type” content=”text/html; charset=gbk”
/>

3、PHP或html文件自身的编码:用editplus打开php文件或html文件,另存时,接受的编码,假设数据库和页面编码是gbk,则那儿的编码选取ansi;假如数据库和页面编码是utf-8,则那儿也采用utf-8。

4、此外要小心的是,Javascript或Flash中传送的数目是utf-8编码,借使数据库和页面编码是gbk,要扩充转码,然后写入数据库。
iconv(‘utf-8′, ‘gbk’, $content);

5、在PHP程序中,能够增加生龙活虎行,来钦定PHP源程序的编码:
header(‘Content-type: text/html; charset=gbk’);

PHP程序设计中普通话编码难题早已苦闷超级多个人,以致那么些难题的由来实在相当的粗略,各国(或区域卡塔尔(قطر‎都规定了Computer音信置换用的字符编码集,如美利坚合众国的扩展ASCII 码, 中夏族民共和国的 GB2312-80,东瀛的 JIS
等。作为这个国家家/区域内新闻管理的功底,字符编码集起着统一编码的第10%效。字符编码集按长度分为
SBCS(单字节字符集State of Qatar,DBCS(双字节字符集State of Qatar两大类。早先时代的软件(特别是操作系统卡塔尔,为了缓和地点字符音讯的微管理机管理,现身了种种本地化版本(L10N卡塔尔,为了差异,引入了
LANG, Codepage
等概念。可是出于种种地点字符集代码范围重叠,互相间消息置换困难;软件各样本地化版本独立维护开销较高。由此有必不可准将本地化专门的工作中的共性收抽出来,作近似管理,将极其的本地化管理内容降到起码。那也正是所谓的国际化(118N卡塔尔(قطر‎。各类语言消息被越来越标准为
Locale 音信。管理的底部字符集产生了大致蕴涵了具备字形的 Unicode。

来个排序

用header或meta完毕PHP页面编码的界别

后生可畏、页面编码

1. 行使 <META http-equiv=”content-type” content=”text/html;
charset=xxx”> 标签设置页面编码

那个标签的效能是声称顾客端的浏览器用什么字符集编码展现该页面,xxx可认为GB2312,GBK,UTF-8(和MySQL不一致,MySQL是
UTF8)等等。因而,超越四分之二页面能够运用这种办法来告诉浏览器展现那一个页面包车型地铁时候利用什么样编码,那样才不会促成编码错误而发生乱码。然而一些时候我们会
发掘存了那句依然要命,不管xxx是哪后生可畏种,浏览器采取的始终都以黄金年代种编码,这一个境况自己背后商谈到。

请小心,<meta>是属于html音讯的,仅仅是三个扬言,它起效果申明服务器已经把HTML音信传到了浏览器。

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

以此函数header(State of Qatar的功力是把括号里面包车型客车音讯发到http标头。

借使括号里面包车型大巴开始和结果为文中所说这样,那功用和<META>标签基本相像,大家对待第二个看开采字符都大约的。然则不相同的是假如有这段
函数,浏览器就能永世接纳你所须求的xxx编码,相对不会不听话,由此这么些函数是很有用的。为何会如此呢?这就得说说HTTPS标头和HTML音讯的差距了:

https标头是服务器以HTTP公约传送HTML音信到浏览器前所送出的字串。

因为meta标签是归于html新闻的,所以header(卡塔尔(قطر‎发送的始末先到达浏览器,通俗点正是header(卡塔尔的优先级高于meta(不明了可
不得以这么讲)。参预叁个php页面既有header(“content-type:text/html;
charset=xxx”State of Qatar,又有<META http-equiv=”content-type”
content=”text/html;
charset=xxx”>,浏览器就只认前面叁个http标头而不认meta了。当然这些函数只好在php页面Nelly用。

同等也留有二个难题,为何前边三个就绝对起效用,而后人一时候就那几个呢?这即是接下去要谈的Apache的来头了。

3. AddDefaultCharset

Apache 根目录的 conf 文件夹里,有整套Apache的计划文书档案httpd.conf。

用文件编辑器开发httpd.conf,第708行(区别版本恐怕差别)有AddDefaultCharset
xxx,xxx为编码名称。那行代码的意趣:设置任何服务器内的网页文件https标头里的字符集为您私下认可的xxx字符集。有这行,就一定于给各样文件都
加了意气风发行header(“content-type:text/html;
charset=xxx”卡塔尔国。那下就知道为啥明明meta设置了是utf-8,可浏览器始终采纳gb2312的因由。

若果网页里有header(“content-type:text/html;
charset=xxx”State of Qatar,就把暗许的字符集改为你设置的字符集,所以这一个函数永恒有用。如若把AddDefaultCharset
xxx前面加个“#”,注释掉那句,何况页面里不含header(“content-type…”卡塔尔国,那这时就轮到meta标签起成效了。

总结:

来个排序

header(“content-type:text/html; charset=xxx”)
AddDefaultCharset xxx
<META http-equiv=”content-type” content=”text/html;
charset=xxx”>
例如你是web程序员,给您的每种页面都加个header(“content-type:text/html;
charset=xxx”卡塔尔(قطر‎,保险它在其它服务器都能科学显示,可移植性强。

有关这句AddDefaultCharset
xxx,要不要批注就畅所欲为了。反正自身是注释掉了,可是小编写页子也要写header(卡塔尔(قطر‎,便于放到服务器上能平时突显。

用文件编辑器打开 httpd.conf,第 708 行(分裂版本恐怕区别卡塔尔国有
AddDefaultCharset
xxx,xxx为编码名称。那行代码的情趣:设置总体服务器内的网页文件 http
标头里的字符集为您暗中认可的 xxx字符集。有这行,就一定于给各种文件都加了生机勃勃行
header(“content-type:text/html;
charset=xxx”卡塔尔。那下就精通怎么明明<meta>设置了是
utf-8,可浏览器始终接受 gb2312 的由来。

5、在PHP程序中,能够增加风度翩翩行,来钦定PHP源程序的编码:
header(‘Content-type: text/html; charset=gbk’);

平凡情状之上代码放在php页面包车型大巴首页

下边列出上述的预先顺序: .. header(“content-type:text/html; charset=xxx”)
.. AddDefaultCharset xxx
.. <meta http-equiv=”content-type”
content=”text/html;charset=xxx”>

php页面为big5编码
header(“Content-type: text/html; charset=big5”);

如今超多具有国际化特征的软件基本字符管理都以以 Unicode
为底子的,在软件运转时依照当下的ocale/Lang/Codepage
设置规定相应的地头字符编码设置,并依此处理地点字符。在管理进度中须要贯彻Unicode 和地点字符集的相互作用调换,甚或以 Unicode
为中等的七个不等地方字符集的相互转变。这种措施在网络情形下被越来越延伸,任何网络两端的字符消息也供给遵照字符集的装置转变到可承当的始末。

PHP页面编码统生机勃勃

PHP 程序在查询数据库早前,首先实施 mysql_query(“SET NAMES xxxx”State of Qatar; 此中xxxx 是你网页的编码(charset=xxxxState of Qatar,假如网页中 charset=utf8,则
xxxx=utf8,假设网页中 charset=gb2312,则xxxx=gb2312,大概具备 WEB
程序,都有意气风发段连接数据库的公家代码,放在四个文件里,在此文件里,出席mysql_query(“SET NAMES xxxx”卡塔尔 就可以了。

倘若括号里面包车型地铁剧情为文中所说那么,那效用和<META>标签基本相仿,我们对待第一个看发掘字符都大概的。可是差异的是生机勃勃旦有这段
函数,浏览器就能够永恒接纳你所必要的xxx编码,相对不会不听话,由此那一个函数是很有用的。为啥会那样啊?那就得说说HTTPS标头和HTML消息的差别了:

请介怀<meta>是归于 HTML 新闻的,仅仅是贰个扬言,仅注解服务器已经把
HTML 音讯传到了浏览器。

以此标签的效应是宣称顾客端的浏览器用怎么着字符集编码突显该页面,xxx可感到GB2312,GBK,UTF-8(和MySQL差异,MySQL是
UTF8)等等。由此,大部分页面能够使用这种方式来告诉浏览器展现这一个页面包车型客车时候使用什么编码,那样才不会形成编码错误而发生乱码。不过有些时候我们会
开采存了那句依然那多少个,不管xxx是哪蓬蓬勃勃种,浏览器选择的风姿洒脱味都是大器晚成种编码,那几个处境本人背后商谈到。

4) php.ini 中的 default_charset 配置:
php.ini 中的 default_charset = “gb2312” 定义了 php
的暗中认可语言字符集。日常推荐注释掉此行,让浏览器依据网页头中的 charset
来机关接受语言而非做一个勉强性的鲜明,那样就能够在一块服务器上提供三种语言的网页服务。