好久没写点东西了,不能老是贴些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代码
- @mysql_query("SET NAMES 'utf8'");
- @mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary");
如果是采用adodb则是在实例化一个对象后用以下代码
PHP代码
- $db->execute("SET NAMES 'utf8'");
- $db->execute("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary");
一切都是圆满的。不仅程序显示没有乱码,就是看phpmyadmin也都没有乱码了。
淡水河边推荐全部采用utf8编码的方式。


