步骤一 命令行执行:mysqldump --opt -hlocalhost -uroot -p*** --default-character-set=lantin1 dbname > /usr/local/dbname.sql
步骤二 将 dbname.sql文件中的create table语句的CHARSET=latin1改为CHARSET=utf8
步骤三 在dbname.sql文件中的insert语句之前加一条'set names utf8;'
步骤四 将dbname.sql转码为utf-8格式,建议使用UltraEditor,可以直接使用该编辑器的'转换->ASCII到UTF-8(Unicode编辑)',或者将文件另存为UTF-8(无BOM)格式
步骤五 命令行执行:mysql -hlocalhost -uroot -p*** --default-character-set=utf8 new_dbname < /usr/local/dbname.sql
按照上述方法做了以后,发现:若新存入数据,是按照utf8格式存储的,但数据库中原有的数据,用php读取后,PHP文件加:header("Content-type:text/html;charset=UTF-8"),却发现读取出来的并不是utf8格式的,而还是GBK格式的,要用"iconv('gb2312','utf-8//IGNORE',$pro);"转换成utf-8的格式才能正确显示,否在就是乱码。
但若PHP文件加:header("Content-type:text/html;charset=gb312"),的话,就能正确显示。不知道为什么?????(就是好像旧数据没有改变成utf8格式)望各位帮帮忙!!!谢谢
8 个解决方案
#1
步骤三
步骤四
这两步不要做试一下。
步骤四
这两步不要做试一下。
#2
好像可以直接改mysql下的配置文件
#3
检查一下php取数据时候用什么编码,这个可能影响返回结果的字符集
#4
用SHOW CREATE TABLE TT看看结果,用MYSQLDUMP导出TXT,再在新的字符集下建立库、表,再导入
#5
我是用php直接从数据库中读取数据,然后直接显示,不知道PHP读取数据还有编码的问题?
能说说吗?
能说说吗?
#6
这个我正好有需要,学习
#7
如果字符集不一样还是会有问题的。参考一下这个贴子
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
#8
这个方面是不可行的。
#1
步骤三
步骤四
这两步不要做试一下。
步骤四
这两步不要做试一下。
#2
好像可以直接改mysql下的配置文件
#3
检查一下php取数据时候用什么编码,这个可能影响返回结果的字符集
#4
用SHOW CREATE TABLE TT看看结果,用MYSQLDUMP导出TXT,再在新的字符集下建立库、表,再导入
#5
我是用php直接从数据库中读取数据,然后直接显示,不知道PHP读取数据还有编码的问题?
能说说吗?
能说说吗?
#6
这个我正好有需要,学习
#7
如果字符集不一样还是会有问题的。参考一下这个贴子
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
#8
这个方面是不可行的。