算来我也是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字符集转换的相关知识点。 #### 二、MySQL字符集概述 在开始详细介绍之前,我们先来...
本文将详细探讨“MySQL_MySQL字符集互转”这一主题,以及如何利用工具如"MSSQL2MySQLSync"进行数据库之间的转换与同步。 MySQL是一种广泛使用的开源关系型数据库管理系统,其支持多种字符集,包括UTF-8、GBK等。...
总之,"中英文字符编码查询助手"是一个实用的工具,能够帮助开发者、程序员以及对字符编码有需求的用户更好地理解和处理各种编码问题。通过这个工具,我们可以更轻松地在中英文之间切换,确保文本信息的准确无误。
Java字符编码转换是Java开发中一个重要的概念,涉及到数据的正确读取、存储和传输。在Java中,编码转换通常发生在以下几个场景: 1. **JVM启动与系统属性**: JVM启动时,会根据操作系统的环境设置一些系统属性,...
3. **String类与字符转换**:`String`类提供了许多方法来处理字符,如`getBytes()`用于将字符串转换为字节数组,`new String(byte[], charset)`则可以将字节数组转换回字符串,指定的charset确保了正确的字符编码。...
这主要涉及到字符编码的兼容性和设置问题,尤其是在使用MySQL数据库与不同编程语言(如Java、JSP)进行交互时更为突出。以下是对如何解决连接MySQL时中文显示乱码问题的详细解析。 ### 解决中文显示乱码的关键知识...
- 解决方法:避免使用编码范围较小的字符集进行转换。例如,在插入数据前先设置客户端连接的字符集和连接字符集为相同的字符集,如`utf8`: ```sql SET character_set_client = 'utf8'; SET character_set_...
4. **码点(Code Point)**: 在字符编码中,每个字符被分配了一个唯一的数字标识,即码点。例如,在Unicode编码标准中,每一个字符都有一个唯一的码点。 5. **字符集合**: 多个字符组成的集合,不同字符集包含的字符...
本文将深入探讨数据库编码转换的相关知识,包括字符集的基本概念、MySQL与PHP在处理编码中的角色,以及如何使用工具进行有效的编码转换。 首先,字符集是定义一组字符及其对应二进制表示的集合,例如GBK、UTF-8等。...
编码转换在IT行业中是一个至关重要的概念,特别是在处理不同系统、平台或语言之间的数据交换时。编码转换涉及到将一种字符编码格式转化为另一种,以确保文本的正确显示和处理。以下是对这个主题的详细解释: 1. **...
【描述】:“多功能编码转换器”旨在帮助用户方便地处理数据库中的字符编码问题。例如,当你需要将一个使用MySQL数据库的项目迁移到使用MSSQL或Access的环境时,由于它们支持的字符编码可能不同,可能会导致乱码或...
MySQL字符集是数据库管理系统中的一个重要概念,它定义了数据在存储和检索时的编码方式,影响着数据库中字符串的表示和处理。字符集的选择对于多语言支持、数据一致性以及跨平台兼容性至关重要。MySQL支持多种字符集...
2. 程序内部处理:在Winform应用中,字符串的读取、存储和显示都可能涉及编码转换。如果编码转换过程不正确,比如从GBK编码转换为UTF-8时未做相应的处理,就会产生乱码。 3. 控件配置:Winform中的某些控件,如...
这三个变量共同决定了数据从客户端到服务端再返回客户端的整个过程中的编码转换方式。如果这些变量设置不当,可能会导致数据在传输过程中出现乱码。 #### 二、查看当前字符集设置 可以通过执行以下命令来查看当前 ...
2. **URL编码**:当需要将字符串作为URL参数传递时,需要对其进行URL编码。 - 示例代码: ```javascript var url = "http://example.com/?q=" + encodeURIComponent("John Doe"); console.log(url); // 输出 ...
在Java编程环境中,字符编码的转换与处理是一个常见的技术难点,尤其当涉及到中文或其它非ASCII字符时。本文将深入探讨在Java中处理字符编码,尤其是UTF-8和GBK编码的转换技巧,以及如何在不同的场景下(如JSP页面与...
这个函数可能会涉及到GBK到UTF-8的编码转换,以及查找对照表中的拼音数据。函数的具体实现可能如下: ```sql DELIMITER // CREATE FUNCTION convert_to_pinyin(input_str VARCHAR(255)) RETURNS VARCHAR(255) BEGIN...
UTF-8是一种广泛使用的多字节字符编码,支持全球大部分语言,包括中文,因此推荐将其作为数据库的默认字符集。 首先,创建数据库时应指定UTF-8字符集。在MySQL中,可以使用以下命令创建一个名为`my_db`的数据库,并...
MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的企业和项目中。...在进行此类操作时,对字符编码的正确理解和配置,以及选择合适的转换工具或方法,都是确保转换成功的关键因素。