2014-04-06 16:42:01
来 源
kejihao
LNMP
本文介绍LAMP服务器环境中解决中文乱码的问题,希望对于初学Apache服务器相关的朋友有帮助,更多Apache安装、配置、报错处理等资源请本站内搜索。
本文最近开始了自己的PHP建站之旅,由于以前几年的Web编程多是建立在Microsoft提供的平台之上,很少出现过中文编码的问题。刚一接触PHP,感到诸多不便,从配置到运行,从编程到调试,可视化的工具少很多,即便有也不是很方便,比如多半是英文界面啦,手动配置选项太多啦,有时还很出现运行的不兼容啦!这里,这只想将自己对Apache、PHP和MySQL 等相关软件对中文支持的一些感受写出来,希望和大家分享,其中的一些经验对于像我一样的初学者来说,是值得借鉴一下的。其中可能有些偏见或者错误,希望能得到高手们的指点。

1.Apache要提供中文支持,可以在配置文件(默认为Httpd.conf)中加入以下行:

AddDefaultCharset      GB2312

但就笔者的经验,Apache的内容服务是可以支持中文,但是Apache的配置文件的内容(除了注释内容)是不支持中文的。比如我想在Apache中建立一个“我的网站”的别名指向“C:/我的网站/”这个目录,使用指令“Alias /我的网站/      C:/我的网站/”是不行的,无论是别名,还是目录名中,都是不能出现中文的,否则Apache就因加载不了配置文件而无法启动。

不知道这是Apache固有的特性还是我有什么设置没有配好,还希望高手指点迷津。

2.PHP中,是通过在配置文件(一般为php.ini)中添加“default_charset = GB2312”这样的行实现的。

3.MySQL的语言设置有些复杂。既可以对服务器设置默认字库,也可以对数据库的单独表格进行字符集设置,最细致的莫过于还能对单独的字段(Field)进行设置(据说是从4.1版开始的)。每处同时要设置Charset(字符集)和Collcation(拼写检查)两个选项。

(1)在MySQL中的配置文件(通常是my.ini)中加入

#设置字符集

default-character-set=gbk

#设置拼写检查

default-collation=gbk_chinese_ci

来支持中文。不设置的话使用Latin5字符集。

也可在MySQL Administrator>>Startup Variables>>Advanced>>Localization中进行设置。

(2)对表格的字符集设置,是在MySQL Administrator中的选中表格>>Edit Table>>Table Options>>Character Set来设置的。留空的话使用服务器默认字体。

(3)MySQL Administrator中的选中表格>>Edit Table>>Columns and Indices>>选中列>>Column Details中进行字符集设置。留空的话使用表格默认字体。

4.应该是从MySQL5.0开始吧,每次在PHP中连接MySQL数据库,要在mysql_connect后面加一句SET NAMES ***来指定字符集,使用SET NAMES UTF8 即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,不如此使用,放进MySQL的中文数据8成是乱码。代码示例:

$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);

mysql_query("SET NAMES 'GBK'");

5.另外值得一提的是MySQL的管理工具MySQL-GUI-Tools。

本人对MySQL的管理是用MySQL AB.提供的MySQL-GUI-Tools(免安装版的)。照理说,同一组织的产品,应该是最能兼容的了。但实际用起来很令人失望,MySQL Administrator使用的时候根本没有考虑要支持中文,在它的“Tools>>Options>>General Options>>Application Fonts”的设置中,Code Font中,会设置一个Width的选项,导致在查询分析器中,中文字符的宽度和英文字符一样宽,挤在一起看不清是什么东西。它的查询分析器对有中文的语句语法显示不正常,而且还会出现乱码的情况,最坏的情况莫过于程序会死掉,自动关闭。

相信在以后的使用中还会有新的心得,到时再聊!

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。