MySQL与php网页中显示的中文字符不一致问题
2012-02-28 14:04
239 查看
首先,MySQL的数据库或者数据表的字符集应该和编辑网页的字符集相同,utf8.
连接数据库的时候:mysql_query("set names ‘gb2312’");
因为我使用了Zend framework框架,所以,使用了Zend_Db组件和 Zend_Db_Table组件,所以,程序如下:
$db=Zend_Db::factory($cfg->db->adapter,$cfg->db->config->toArray());
$db->query("SET NAMES'gb2312'");
Zend_Db_Table::setDefaultAdapter($db);
以下是百度文库给出的解决方案:
建议数据库用utf8编码 问题汇总: 1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. 2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码. 5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码. 6.PHP页面字符集不正确. 7.PHP连接MYSQL数据库语句指定的编码不正确. 使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了. 针对不同问题的解决方法: 1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. 修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin
执行如下命令: ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将test数据库的编码设为utf8. 2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 修改表的编码: ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将一个表category的编码改为utf8.
3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 修改字段的编码: ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 以上命令就是将test表中 dd的字段编码改为utf8. 4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码. 如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.
5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码. 这种情况也是修改页面charset即可. 6.PHP页面字符集不正确. 为了避免PHP页面乱码的发生,PHP页面开始第一句 header("content-type:text/html; charset=utf-8"); //强行指定页面的编码,以避免乱码 7.PHP连接MYSQL数据库语句指定的编码不正确. 在连接数据库的语句中. mysql_connect('localhost','user','password');
mysql_select_db('my_db'); mysql_query("set names utf8;"); //或写为 mysql_query("SET CHARACTER SET utf8");
连接数据库的时候:mysql_query("set names ‘gb2312’");
因为我使用了Zend framework框架,所以,使用了Zend_Db组件和 Zend_Db_Table组件,所以,程序如下:
$db=Zend_Db::factory($cfg->db->adapter,$cfg->db->config->toArray());
$db->query("SET NAMES'gb2312'");
Zend_Db_Table::setDefaultAdapter($db);
以下是百度文库给出的解决方案:
建议数据库用utf8编码 问题汇总: 1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. 2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码. 5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码. 6.PHP页面字符集不正确. 7.PHP连接MYSQL数据库语句指定的编码不正确. 使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了. 针对不同问题的解决方法: 1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. 修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin
执行如下命令: ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将test数据库的编码设为utf8. 2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 修改表的编码: ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将一个表category的编码改为utf8.
3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 修改字段的编码: ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 以上命令就是将test表中 dd的字段编码改为utf8. 4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码. 如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.
5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码. 这种情况也是修改页面charset即可. 6.PHP页面字符集不正确. 为了避免PHP页面乱码的发生,PHP页面开始第一句 header("content-type:text/html; charset=utf-8"); //强行指定页面的编码,以避免乱码 7.PHP连接MYSQL数据库语句指定的编码不正确. 在连接数据库的语句中. mysql_connect('localhost','user','password');
mysql_select_db('my_db'); mysql_query("set names utf8;"); //或写为 mysql_query("SET CHARACTER SET utf8");
相关文章推荐
- Mysql中存取以及显示中文字符的问题
- PHP连接MySQL查询结果中文显示乱码问题
- mysql不能插入中文字符以及中文显示乱码问题
- php 中文字符入库或显示乱码问题的解决方法
- 数据库_MySql_中文字符显示乱码问题
- [PHP+MySQL开发基础分享]关于PHP会话和网页中文乱码的问题
- php adodb 从mysql数据库中输出中文显示到utf编码网页乱码问题
- php 中文字符入库或显示乱码问题的解决方法
- mysql中插入和显示中文字符问题
- rails与mysql之间中文数据显示不一致的问题
- Jsp与mysql中的中文显示问题
- mysql中utf8编码中文字符长度问题
- php实现网页页面显示mysql中的记录
- 连接mysql server 5.0 数据库的乱码问题,utf8编码,中文正确显示
- PHP返回mysql数据库中文字符出现乱码问题之解决方案
- MySQL 存储php中json_encode格式中文问题及解决
- mysql 数据查询时 中文乱码问题 以 php 为例
- PHP-MYSQL中文乱码问题.
- java中文字符写入MySQL乱码问题
- phpmyadmin显示mysql 中文乱码问题