字符集转换之LATIN1 to UTF8问题。

xiaoao 2006-09-05 11:44:41
原来以为字符集就是数据库和表有没有想到原来有这么多个设置,我尝试从原来的LATIN1 to UTF8(DISCUZ 4.1)数据导入后显示乱码。
环境:(怕风险先在本地测试的XP+APACHE2+PHP5+MYSQL4.1)
步骤:1.PAM(phpmyadmin)导出数据表加DROP
2.PAM导出数据
3.修改数据表文件把latin1改成UTF8
4.把数据文件用EDITPLUS保存成UTF8格式(这步是否必须?)
5.用PAM导入数据库(建立UTF8的表)
6.到DOS下用MYSQL命令导入数据,这样比较快毕竟30M东西用PAM不行了(是否DOS下不支持UTF8文件格式?)
7.数据显示还是乱码。

PS:(直接装DZ的UTF8版本可以正常显示,现在就是数据转移不过去。)

用:

mysql> show variables like "char%"
-> ;
可以看到如下信息,这些字符集信息是否要统一成一种,我现在有点乱了。
+--------------------------+----------------------------------+
| character_set_client
| character_set_connection | |
| character_set_database | |
| character_set_results | |
| character_set_server | |
| character_set_system | |
| character_sets_dir |
+--------------------------+----------------------------------+

如何设置上面的信息。
...全文
1401 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoao 2006-09-05
  • 打赏
  • 举报
回复
字符集显示
character_set_system utf8;
其他都是LATIN1
gu1dai 2006-09-05
  • 打赏
  • 举报
回复
mysql>\s

看你的服务器配置

修改my.ini
将latin的修改为utf8的,重启mysql.

-------------------------------示范.----------------

[mysql]

default-character-set=utf8

[mysqld]

default-character-set=utf8
caotian2000 2006-09-05
  • 打赏
  • 举报
回复
你先执行一下SET NAMES UTF8;

你再看看你导入的是不是乱码了!
helloyou0 2006-09-05
  • 打赏
  • 举报
回复

程序里只要在连接后加set names utf8就可以了,不用每个sql都加.

你的char* variables 的值怎么看不见?
另导出导入数据时都可以指定字符集,当时如何指定的? 或当时的char* variable值?


xiaoao 2006-09-05
  • 打赏
  • 举报
回复
SET NAMES UTF8;
是不是只要加在SQL数据文件的头部。
还是做一次INSERT就要设一下。
我是在DOS下用mysql -uroot -p XXX<xxx.sql导入的。
caotian2000 2006-09-05
  • 打赏
  • 举报
回复
现在你的数据库默认可能还是LATIN1的!

你要更改一下你的MYSQL配置文件!

或者在每个SQL语句前面加上SET NAMES UTF8;
ice_berg16 2006-09-05
  • 打赏
  • 举报
回复
使用时是否设置
set names utf8;
php版mysql大数据库备份和恢复工具,这是亮仔修改的无乱码版 在原faisunSQL 4.0的基础上,针对数据备份过程中出现乱码的问题,做了优化. 增强的功能: 1.自动识别数据库版本,对于MySQL 4.1以上,备份数据时提示选择字符集. 2.导入数据时,提示原数据库编码,并自动识别. 3.增加导入目标数据库字符集选项. 4.支持GBK、BIG5、UTF8之间的编码转换(见特别说明4). 特别说明: 1.乱码问题一般仅出现在MySQL 4.1/MySQL 5 版本以后,如果你的数据库低于这个版本,基本可以不用考虑这个问题. 2.确保原始数据的完整是至关重要的.就算导出时出现乱码,但只要原始数据完整,总有解决的办法.所以,导出时数据库字符集的选择必须正确,保证导出数据无乱码.一般为GBK,UTF8Latin1.导出后,可以用文本编辑器先查看一下,看是否出现问号(?)等乱码. 3.导出和导入数据编码要保持一致(见特别说明4). 4.虽然程序目前支持GBK、BIG5、UTF8之间的编码转换,但这种转换不是安全的.首先你的目标导入服务器要支持iconv,即在导入时如果"编码转换功能"提示为支持,则可以使用此功能.反之则不可以.其次,转换时的数据必须是"干净"的.即GBK、BIG5、UTF8不能混合.如果你想将原来备份出的GBK数据导入到编码为UTF8数据库,则你的GBK数据中仅能含有GBK或GB2312的简体中文字符.不可以出现BIG5等繁体字符,否则转换将失败.基本上,一般的博客/论坛数据都不能保证这种纯净性,谁也不能保证你的文章中不会混合使用简体和繁体文字,所以这种跨字符集的导入导出数据难度很大.绝对不要轻易尝试这种游戏.目前的主流论坛如Discuz、PHPWind等都提供支持GBK、BIG5和UTF8的不同程序.你在最初安装时,一定先想好自己需要那种字符的程序,一旦选定,以后不是迫不得已,不要更改.以上仅针对 5.鉴于上面特别说明4,如果你是从MySQL 4.0.X/MySQL 3的老数据版本导入到MySQL 4.1/MySQL 5的高数据库版本,导入时请选择GBK编码.如果是UTF8编码的数据,如我的博客(http://www.zhouliang.name)采用WordPress程序,默认使用UTF8编码,则只能在MySQL 4.1/MySQL 5以上的数据库中导入导出,因为低版本的MySQL不支持UTF8. 6.以上说明仅针对本程序而言,在编码转换方面,不排除通过其他手段实现的可能性. 程序使用中出现任何问题(编码转换方面),欢迎与我联络: 我的E-Mail: php@zhouliang.name 本程序讨论主页:http://www.zhouliang.name/archives/198.htm 我的博客:http://www.zhouliang.name 此程序只是针对"乱码"问题做了改进,faisunSQL 4.0其他方面的故有功能效率与本增强版无关,如有问题请联系原作者.

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧