当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL V4.1 乱码终极解决方案

MYSQL
MySQL字段类型详解
MySQL安全问题的一点心得
Linux下通过C++语言代码来操作MySQL数据库
Mysql常用命令行大全
保护MySQL数据库中重要数据的注意事项
Jsp连接Mysql数据库:利用Servlet监听器
提高MySQL数据库查询效率的几个技巧
精细分析 SQL server服务器的内存配置
如何选择合适的MySQL存储引擎
如何对MySQL数据库日志文件进行维护
如何进行MySQL数据库表的故障检测
如何对MySQL数据库表进行锁定
Navicat for MySQL 与 MySQL-Front比较
DBA经验:如何进行MySQL数据库表的故障检测
小谈MySQL字符集
mysql数据库下损坏数据的恢复操作其过程总结
MySQL如何查询当前正在运行的SQL语句
MySQL数据库的临时文件究竟储存在哪里
用MySQL内建复制功能来优化可用性
使用ODBC接口访问MySQL

MYSQL 中的 MySQL V4.1 乱码终极解决方案


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 58 ::
收藏到网摘: n/a

作者: www.quicklinux.org
邮件: [email protected]

MySQL4.1是比较烦人.支持多语言的细化设置.再加上PhpMyadmin-2.6也比较笨.默认就是改不动的UTF-8.怎么弄都乱码.好了.废话少说.我们来一步步解决这个问题:

1. 修改/etc/my.cnf文件.改成如下内容:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

注意.就是加入了一句: default-character-set=utf8

2. 命令 /etc/init.d/mysqld restart 重新启动MySQL.

3. 打开PhpMyadmin. 选择Lang为"Chines simplifies(zh-utf-8)". 选择"MySQL连接校对为utf8_general_ci". 点"服务器变量和设置". 可以看到:

character set client utf8 utf8
character set connection utf8 utf8
character set database utf8 utf8
character set results utf8 utf8
character set server utf8 utf8
character set system utf8 utf8
collation connection utf8_general_ci utf8_general_ci
collation database utf8_general_ci utf8_general_ci
collation server utf8_general_ci utf8_general_ci

从这里可以看到character全部变成UTF-8了.

为什么都要改成UTF-8呢?改成GB2312不行吗?解释如下:

我也不想改成UTF-8. 只是PhpMyadmin 2.6在MySQL 4.1的时候只会用UTF-8. 连其他页面的charset也都是UTF-8. 改成GB23122一定会乱码. 我们只能凑PhpMyadmin了. 只有在MySQL 3.23的时候PhpMyadmin才会多一个GB2312的页面charset.这时候是正常的.

3. 将以前的MySQL 3.23的库文件导入MySQL 4.1的库.有两种情况:

一是从PhpMyadmin上导入. 这时候你要注意的是在选择库文件的页面左下脚有个"文件的字符集:". 默认是UTF-8. 要改成Gb23122. 否则导进去乱码.
二是在Linux下导入.这时候你需要先在库文件的头部加一行:

SET NAMES 'gb2312';

注意最后也是;号. 别漏了. 然后执行: MySQ -u 用户名 -p 密码 xxx.sql > 库名
导入完成以后再用PhpMyadmin打开看. 里面的中文字就是正确的.

4.从MySQL 4.1里导出库文件

一.用PhpMyadmin导出.导出倒是问题不大.如果PhpMyadmin的浏览页面里显示的中文是正常的.那么导出肯定也是正常的.
二.在Linux上导出.如果用mysqldump导出出现了乱码也没有关系.可以运行iconv来转换一下:

iconv -c -f UTF-8 -t GB2312 库文件名 > 新的Gb2312的库文件名

综上所述.需要注意:

1. 尽量在需要导入的库文件的开头加入 SET NAMES 'Gb2312'; 告诉MySQLl你要导入的是一个Gb2312的文件.

2. 可能你需要这个: SET NAMES 'utf8'; 在登陆到MySQL后用.

3. 把character的一些默认参数改到UTF-8上.有时可以减少一些困扰.不过也不是必须的.

4. 在MySQL上使用: SHOW VARIABLES LIKE 'character_set_%'; 用来查看当前的状态.

5. 如果出现乱码也不要怕.一是你要注意留存原有的备份.二是用iconv来进行转化.