采用utf8编码彻底解决php乱码问题

好久没写点东西了,不能老是贴些mv充数啊。正好手头案子是多语种要求的,于是淡水采用utf8编码。于是遇到了乱码问题,又于是淡水就写下了此文。

如果你是MySQL使用4.1以上版本,不管是什么字符集,一律使用默认。不去设置MySQL,也不会产生乱码的例子。(淡水河边再次提示一下注意要是4.1或更高版本)

你只要保证你的写着INSERT SQL语句的PHP文件编码为GB2312,那么,你使用写着SELECT SQL语句的GB2312编码的PHP文件读取出来的数据也是GB2312的

同理,只要你插入数据库的PHP文件是UTF-8编码,那么你录入的就是UTF-8的,读取出来同样使用编码为UTF-8的php来读取。

还有更精彩的。以上虽然看上去没有问题了。但是打开phpmyadmin的时候,你就会又看到乱码了,因为数据库的字符集不一定和你的程序编码一样啊,其中有牵扯到MySQL 连接校对等。怎么办?我的数据以后怎么备份转移啊?……不急, 只要两步我们就搞定乱码了。

第一,把插入数据的php文件和读取数据的php文件,还有模板文件(如果你使用了模板引擎)等文件都采用utf8的编码。

第二,在链接数据库后,CRUD数据之前加上以下代码

PHP代码
  1. @mysql_query("SET NAMES 'utf8'");   
  2. @mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary");  

如果是采用adodb则是在实例化一个对象后用以下代码

PHP代码
  1. $db->execute("SET NAMES 'utf8'");   
  2. $db->execute("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary");  

一切都是圆满的。不仅程序显示没有乱码,就是看phpmyadmin也都没有乱码了。

淡水河边推荐全部采用utf8编码的方式。

Tags: utf8, 乱码, adodb

« 上一篇 | 下一篇 »

只显示10条记录相关文章

Trackbacks

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

发表评论

评论内容 (必填):