在实际项目中常常被中文字符乱码问题打扰,开始时,不知其为什么会出现这种现象,不知其中的原理。经查阅和高人的解惑,因此总结出用于解决这个棘手问题的方法。
一、WEB页面字符编码设置问题
为了保证有中文字符页面在任何浏览器中不会出现乱码现象,只要保证服务器应答消息头中的设置与页面本身的编码一致就可。
1. 比如在新建/编辑页面文件的时候,存储时把文件格式选择用 "UTF-8";
2. PHP.ini 中一般不用去设置其编码,配置文件中的 default_charset = "UTF-8";在页面中设置是一样的效果
meta http-equiv="content-type" content="text/html; charset=UTF-8" 这样,你在浏览器中的编码:
"view->Charset Encoding->Unicode(utf-8);
3. 利用 header("content-type:text/html; charset=utf8"); 也可以;
二、JS程序查询MySQL数据库中文乱码的问题
对于利用AJAX进行数据提交时,中文出乱码现象往往是页面自身的编码、查询的参数编码与数据库的编码不一致造成的。
1. 首先JS传递参数时(utf8编码),需要 escape(), 在后台程序需要对其接收的参数进行 unescape()。
2. iconv函数库能够完成各种字符集间的转换,如iconv('GB2312', 'UTF-8', $paraValues)。
3. 为了保持查询数据库的编码统一,可以在查询前进行 mysql_query('set names utf8'); 显示客户端发送的SQL语句中使用什么字符集。