本文最近开始了自己的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的选项,导致在查询分析器中,中文字符的宽度和英文字符一样宽,挤在一起看不清是什么东西。它的查询分析器对有中文的语句语法显示不正常,而且还会出现乱码的情况,最坏的情况莫过于程序会死掉,自动关闭。
相信在以后的使用中还会有新的心得,到时再聊!