`
xiaoych
  • 浏览: 145173 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何对mysql中的字符进行编码转换

阅读更多
算来我也是mysql的忠实用户了,从mysql 3 的时候就开始用mysql,直到现在开始使用5.1版本,看到mysql一点一点的变化,感觉mysql功能越来越强大,真是是我们这种用不起oracle用户的福音啊!

如果没有记错的话,mysql4.0升级到4.1以后,就增加了字符集这个概念。从mysql4.0及以下的版本,迁移到mysql4.1及其以上的版本就会出现中文字符出现乱码的问题。由于以前mysql的编码是latin1 SW (好像是瑞典字符集——mysql是由瑞典人开发的,估计当时没有考虑国际化的问题),现在我们用的编码一般是gbk或者utf8。那么以前latin1编码的表中的中文怎么迁移到gbk或者utf8编码的表中呢?直接更改表的编码是没有任何作用的,参考了一些资料,说是mysql在更改表编码的时候,不会对表中现有数据进行转码。

网上有很多怎么进行转码的资料和程序,感觉都不是很方便。比较BT的就是用PHP,一行一行的从mysql的源表中读出来,再利用PHP进行转码,然后再查到目标表中。想想这样做确实有用。但是性能惨不忍睹……小表还可以这么做,要是上百万行记录的表,非等上几个小时不可,实在太浪费时间。

好了,前面都是废话,俺就贡献一下俺的研究吧:

首先,到mysql\bin 下面,利用mysqldump这个工具,执行以下命令:

mysqldump --u=root -p --default-character-set=latin1 --set-charset=utf8 --skip-opt --result-file=c:\mytable.sql mydb mytable


其中:root 为数据库登录名, latin1 为源表(就是想进行转码的表)的编码, utf8 为想转换成的编码, c:\mytable.sql 为导出的数据的存放文件(临时用), mydb是源表所属的数据库(schema),mytable 就是源表名了

执行这条命令,会提示输入密码,输入正确的密码以后,就开始导出数据了。等到数据全部导出以后,可以用ue等工具打开,这时可以看到这些数据的编码已经转变了。

然后需要对这个文件进行一点点更改。在文件的最开头有一个建表语句。类似于:
CREATE TABLE `mytable` (
  `tableid` bigint(20) unsigned NOT NULL,
  `c1` int(10) unsigned NOT NULL default '0',
  `c2` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`tableid`)
);


注意看最后的分号,缺少了一点点东西:engine=myisam DEFAULT CHARSET=utf8 engine 和 charset 的意义地球人都知道啊... 将这一段加进去。结果可能是这样:

CREATE TABLE `mytable` (
  `tableid` bigint(20) unsigned NOT NULL,
  `c1` int(10) unsigned NOT NULL default '0',
  `c2` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`tableid`)
) engine=myisam DEFAULT CHARSET=utf8;


其中engine 和 charset 改成期望的东西,如:innodb gbk 等...

保存文件。(如果是用UE等工具即使文件大也不会等太久,如果用记事本打开的……恭喜你!

这样就成功了一半了,剩下的工作只需要导入这个转好码的数据了。

将原来的那个表改名,一是为了备份,二是防止导入的时候说表已经存在。

然后还是进入mysql\bin 下面,运行:

mysql -u root -p mydb < c:\mytable.sql


输入密码以后程序开始工作,一段时间以后,新表就出来咯...

mission complete!
分享到:
评论

相关推荐

    MySQL数据库字符集转换及升级全教程

    MySQL 4.1开始把多国语言字符集分的更加详细,所以导致数据库迁移,或则dz论坛升级到4.0后(dz4.0开始使用gbk或utf-8编码)出现乱码问题。本文分析了出现乱码的原因,介绍了MySQL数据库字符集转换及升级的方法。

    mysql修改数据库编码(数据库字符集)和表的字符编码的方法

    mysql将表的字符编码转换成utf-8 代码如下:alter table tb_anniversary convert to character set utf8; 修改数据库mysql字符编码为UTF8 步骤1:查看当前的字符编码方法 代码如下:mysql&gt; show variables like’...

    完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题

    MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的... 现在我将用图文并茂的方式向大家展示一下如何将MySQL字符集进行转换,由于字符集比较多,现在主要举GBK和Latin1这两种字符集之间的

    MySQL常用字符串函数

    MySQL常用字符串函数 先看下数据库表 lengtt(str) length:获取参数值的字节个数(注意不是字符个数) SELECT LENGTH('haosy') 结果是5 SELECT LENGTH('haosy郝') 结果是8 不是6(是字节个数不是字符个数,因编码...

    MySQL GBK→UTF-8编码转换

    Convertz——文本编码转换工具,molyx上介绍的,我采用的。其实这类工具很多。 二理论: MySQL从4.1版本开始内部存储字符集支持了UTF-8,这个我也是这几天才看到的。因为升级论坛过程中,服务器数据库环境为4.0.26...

    MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

    MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的。 character-set-database:数据库字符集。 character-set-table:数据库表字符集。 优先级依次增加。所以...

    mysql5.1中文手册

    MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 ...

    文本文件编码转换工具 gbk utf8 gb2312

    -----MySQL 字符集: UTF-8 Unicode (utf8) -----&gt; 2)建表时候一切默认;至于导入*.SQL没试应该是不用动什么&lt;!-----MySQL 字符集: UTF-8 Unicode (utf8) -----&gt; 3)在 php 文件头部加入 ; charset=utf-8"&gt;&lt;/HEAD&gt; ...

    MYSQL中文手册

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. ...

    mysql资料_导入导出_备份还原_编码_字段类型长度_字符串_长度-定位-截取-拼接_日期_求差-加减-UTC-时区转换_查看表空间大小

    资源包含文件: 1、MySQL命令行导出数据库.txt 2、MySQL字段数据类型和...4、编码.txt usefullSQL包含有: 字符串:求长度,定位,截取,拼接 日期操作:求差,加减,UTC时间,时区(timezone)转换等 查看表空间大小

    MySQL 5.1参考手册

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

    php版mysql大数据库备份和恢复工具

    程序使用中出现任何问题(编码转换方面),欢迎与我联络: 我的E-Mail: php@zhouliang.name 本程序讨论主页:http://www.zhouliang.name/archives/198.htm 我的博客:http://www.zhouliang.name 此程序只是针对"乱码...

    mysql官方中文参考手册

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

    mysql字符集乱码问题解决方法介绍

    character-set-server/default-character-set:服务器字符集,默认情况下所采用的。 character-set-database:数据库字符集。...当客户端向服务器发送请求时,请求以该字符集进行编码。 character-set-results:结

    MySQL绿色版设置编码以及1067错误详解

    MySQL绿色版设置编码,以及1067错误 查看MySQL编码 SHOW VARIABLES LIKE 'char%'; 因为当初安装时指定了字符集为UTF8,所以所有的编码都是UTF8。 character_set_client:你发送的数据必须与client指定的编码一致!...

    使MySQL能够存储emoji表情字符的设置教程

    将Mysql的编码从utf8转换成utf8mb4。 需要 &gt;= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错 停止MySQL Server服务 修改 my.cnf或者mysql.ini [client] default-character-set = utf8...

    MySQL 5.1参考手册中文版

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. ...

    mysql保存微信昵称特殊字符的方法

    我在用mysql 保存微信昵称,当插入昵称数据的时候,报错。于是做了如下工作:  一、简介  MySQL在5.5.3之后增加了这... 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三

    查看修改mysql编码方式让它支持中文(gbk或者utf8)

    MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8。 1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:&gt;mysql -u root –p,之后两次输入...

Global site tag (gtag.js) - Google Analytics