怎样将mysql中数据的编码格式有latin1转换成utf8格式?

时间:2023-01-10 11:19:17
在网上搜了半天,也试了半天,按照网上的方法:

步骤一 命令行执行: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读取数据还有编码的问题?
能说说吗?
引用 3 楼 dqlmj2009 的回复:
检查一下php取数据时候用什么编码,这个可能影响返回结果的字符集

#6


这个我正好有需要,学习

#7


引用
我是用php直接从数据库中读取数据,然后直接显示,不知道PHP读取数据还有编码的问题?
如果字符集不一样还是会有问题的。参考一下这个贴子
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读取数据还有编码的问题?
能说说吗?
引用 3 楼 dqlmj2009 的回复:
检查一下php取数据时候用什么编码,这个可能影响返回结果的字符集

#6


这个我正好有需要,学习

#7


引用
我是用php直接从数据库中读取数据,然后直接显示,不知道PHP读取数据还有编码的问题?
如果字符集不一样还是会有问题的。参考一下这个贴子
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码

#8


这个方面是不可行的。