MySql 4.1 编码问题

Home Home
引用 | 编辑 笑笑
2008-06-01 11:01
楼主
推文 x0
试了好几天的MySQL编码问题终于搞定。
在利用Google大神搜寻相关资料后,在jjgod的"A MySQL 4.1 Story"这篇文章中,终于看到关于MySQL编码的详细说明。
现在终于比较清楚MySQL的运作状况了。

我的结论:在MySQL 4.1中,不管是资料库栏位甚至client result连结状况都必需要设定编码
如果没设定的话,就会以预设的编码(Latin1)来传递所有的结果。
因此假设资料库的编码已经设定为utf8了,但是在client和result的编码没有设定,存入资料库和资料库中取出的资料也会出现错误(因为经过两次latin1的编码,会把Big5或是utf8的中文字破坏掉。)
因此如果打算以utf8来做为所有的资料呈现和储存的话,可以在进行任何sel query之前加入:
SET character_set_client='utf8' //设定客户端编码
SET character_set_connection='utf8' 设定连结时所用编码
SET character_set_results='utf8' //设定传回资料时所用编码
这样的设定方式就等于:
SET NAMES 'utf8'
因此只要在写query之前加上
mysql_query("SET NAMES 'utf8'");
在进行资料的储存和读取动作就会正常了,如此一来在phpMyAdmin中也可以看到正常的中文显示啰 ^_^

转贴自 http://stu.dhjh.tp.edu.tw/plog/post/3/847

献花 x0