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下载文件的代码示例
Jun 29 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
深入解析php中的foreach函数
Aug 31 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
php基础教程
Aug 26 PHP
PHP邮件群发机实现代码
Feb 16 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 PHP
在laravel中使用with实现动态添加where条件
Oct 10 PHP
PHP实现文件上传与下载
Aug 28 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
基于PHP array数组的教程详解
2013/06/05 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
Node.js事件驱动
2015/06/18 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
js实现div色块碰撞
2020/01/16 Javascript
原生js实现日历效果
2020/03/02 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
用python发送微信消息
2020/12/21 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
网络技术支持面试题
2013/04/22 面试题
四种会话跟踪技术
2015/05/20 面试题
实习生个人的自我评价
2013/12/08 职场文书
大学活动策划书范文
2014/01/10 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
博士生专家推荐信
2014/09/26 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
Python学习之迭代器详解
2022/04/01 Python