MySQL GBK→UTF-8编码转换


Posted in PHP onMay 24, 2007

前言:
第一次写教程,其实算不得教程,只是想总结个转换的手记。如果中间有错误,或者办法不够理想,大家回贴研究下。
另外,我也希望我们论坛不仅仅作为闲聊的地方,也希望大家能活跃我们论坛的学习气氛,毕竟我们都来自一个应该给我们知识的地方,不论你从那里获得了多少你需要的知识。

好了,言归正传。

一准备:
环境:MySQL4.1.x及以上版本。
Convertz——文本编码转换工具,molyx上介绍的,我采用的。其实这类工具很多。

二理论:
MySQL从4.1版本开始内部存储字符集支持了UTF-8,这个我也是这几天才看到的。因为升级论坛过程中,服务器数据库环境为4.0.26当时不知道并不支持utf-8字符集,还废了些周折。这样如果涉及到UTF-8转储还要升级MySQL版本到4.1以上。
转换的大概思路是——备份(有备无缓)→修复数据库→mysqldump导出→Convertz转换编码→修改转换后文件→mysqldump导入恢复

三实践:
1、备份。这个不需要太多说了你可以采用任何一种常规的备份方式只要你自己恢复的了。
2、修复。mysqlcheck -r -u user -p 如果全OK那就OK了,如果不全OK,再来遍。还没全OK,不知道怎么弄了。
3、导出。由于latin1为默认存储,所以你需要事先确定你数据库的编码格式。举例,lncz.net原为gbk编码,但存储为latin1,这样导出时应该指定编码为latin1,导出后才能以ANSI形式正确显示gbk的文字。
导出命令:mysqldump database_name field > path --default-character-set=latin1 -u user -p
数据库大需要分段,不然接下来的操作会很麻烦。我是单独把每个表导出来的。当时想法比较简单,因为数据库有坏表,只想在恢复的时候知道哪个表出错单独修复。
4、转换。Convertz用这个软件很简单,不必多说了。
5、修改。我在尝试直接导入恢复数据库时,失败了N次,每次都乱码。仔细想过之后才明白,如果你直接导回去,数据库还是用默认的latin1去存储,而你的现在的编码是utf-8所以它会再进行一次转换便出错了。这里MySQL到底怎么处理的我还不是十分清楚,谁知道麻烦相告。这时我们需要对转换好的文件加入语句 “set names utf8;”注意不是utf-8;并且需要将文件中“CHARSET=latin1;”改为“CHARSET=utf8;”来指定表的存储编码。
6、恢复。恢复过程按道理应该是很简单的,都是mysqldump处理。需要注意一点就是如果你的数据库大,要做全局变量的修改max_allowed_packet默认为1M,看你数据库表的大小,相应修改my.ini文件。
导入命令:mysqldump database_name < path -u user -p 导入顺利的话你的数据库编码就已经转换为utf-8了。

在下比较菜,如果有错误请指正,表笑我。以上仅供参考。 

PHP 相关文章推荐
php生成WAP页面
Oct 09 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
PHP 获取远程文件大小的3种解决方法
Jul 11 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
360搜索引擎自动收录php改写方案
Apr 28 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 #PHP
站长助手-网站web在线管理程序 v1.0 下载
May 12 #PHP
MySQL授权问题总结
May 06 #PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
May 03 #PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 #PHP
什么是MVC,好东西啊
May 03 #PHP
php中的MVC模式运用技巧
May 03 #PHP
You might like
一个查看session内容的函数
2006/10/09 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
春风行动实施方案
2014/03/28 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
迎新晚会策划方案
2014/06/13 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android