同样也留有一个问题为什么前者就绝对起作用而后者有时候就不行呢?这就是接下来要谈的Apache 的原因了
) AddDefaultCharset
Apache 根目录的 conf 文件夹里有整个 Apache 的配置文档 httpdconf
用文本编辑器打开 httpdconf第 行(不同版本可能不同)有 AddDefaultCharset xxxxxx为编码名称这行代码的意思设置整个服务器内的网页文件 http 标头里的字符集为你默认的 xxx字符集有这行就相当于给每个文件都加了一行 header(contenttype:text/html; charset=xxx)这下就明白为什么明明 设置了是 utf可浏览器始终采用 gb 的原因
如果网页里有 header(contenttype:text/html; charset=xxx)就把默认的字符集改为你设置的字符集所以这个函数永远有用如果把 AddDefaultCharset xxx 前面加个#注释掉这句而且页面里不含 header(contenttype…)那这个时候就轮到 meta 标签起作用了
下面列出以上的优先顺序
header(contenttype:text/html; charset=xxx)
AddDefaultCharset xxx
如果你是 web 程序员建议给你的每个页面都加个header(contenttype:text/html;charset=xxx)这样就可以保证它在任何服务器都能正确显示可移植性也比较强
) phpini 中的 default_charset 配置
phpini 中的 default_charset = gb 定义了 php 的默认语言字符集一般推荐注释掉此行让浏览器根据网页头中的 charset 来自动选择语言而非做一个强制性的规定这样就可以在同台服务器上提供多种语言的网页服务
结束语
其实 php 开发中的中文编码并没有想像的那么复杂虽然定位和解决问题没有定规各种运行环境也各不尽然但后面的原理是一样的了解字符集的知识是解决字符问题的基础不过随着中文字符集的变化不仅仅是 php 编程中文信息处理中的问题还是会存在一段时间的
[] [] [] []