当前位置: 首页 > 知识库问答 >
问题:

使用iconv转换mysqldump-ed数据库

姜振濂
2023-03-14

尝试将latin1 mysql DB快速转换为utf8,我尝试了以下操作:

  1. 转储数据库
  2. 对结果文件运行iconv-f latin1-t utf8
  3. 导入到使用UTF8默认编码的新数据库

除了...有些字母转换错误(例如:大写重音的“U”变成了以问号开头的乱码序列)。正在进行一些转换(od a查询结果显示了一个两字节序列,其中latin1字节是),并且te latin1版本是正确的。尽管到目前为止,我一直没有系统地将问题隔离开来(深夜;在截止日期之前;等等),但问题的怪异让我心碎:为什么它会在一些信件上失败,而不是全部?客户端连接?列字符集?为什么我没有得到任何诊断?我被困住了。

当然,我可以把这个问题和它的细节分离出来,但是我想也许有人已经遇到了这个问题,并且可以通过这个(诚然是相当糟糕的)描述来识别它。

干杯

共有2个答案

范豪
2023-03-14

不要用iconv,它只会把工作搞得一团糟。

假设一个表被声明为latin1并且正确地包含latin1字节,但您希望将其更改为utf8,那么对该表执行以下操作:

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;

也可以用转储和重新加载来完成;它涉及对参数的一些更改。抱歉,我不知道细节。

易炳
2023-03-14

数据可能存储为latin1,但有可能您用来转储数据的客户机已经将其导出为UTF-8。

在一个像样的文本编辑器(notepad++、TextWrangler、Atom)中打开转储文件,并检查哪种编码允许正确显示所有字符。

然后在将数据导入回来时,确保您的客户机设置为在导入时使用UTF-8。

 类似资料:
  • 本文向大家介绍php中字符集转换iconv函数使用总结,包括了php中字符集转换iconv函数使用总结的使用技巧和注意事项,需要的朋友参考一下 iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。 用法如下: 扩展如下: 备注: 1、iconv不是php的默认函数,也是默认安装的模块。需要安装才能用的。 如果是windows2000+php,你可以修改php.ini文件

  • 本文向大家介绍MySQL数据库使用mysqldump导出数据详解,包括了MySQL数据库使用mysqldump导出数据详解的使用技巧和注意事项,需要的朋友参考一下 mysqldump是mysql用于转存储数据库的客户端程序。它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等。可

  • 问题内容: 我正在寻找用于在mysql数据库中转储所有数据的语法。我不需要任何表格信息。 问题答案: 如果您使用触发器,则还需要包括 如果您使用的是选项,则还需要包括

  • 我在MySQL上有一个生产数据库,带有Windows安装程序。 它安装了MySQL Workbench CE 5.2.47和MySQL。 现在,我想启动mysqldump来备份我的生产数据库。mysqldump在MySQL Workbench CE 5.2.47目录右。 所以我启动这个dos命令: 和...开始..失败我得到了这个丑陋的错误: mysqldump:无法执行“SET OPTION S

  • 我正在尝试使用iconv将UTF-16BE编码文件(字节顺序标记:0xFE 0xFF)转换为UTF-8,如下所示: 然而,结果输出具有UTF-8字节顺序标记(0xEF 0xBB 0xBF),这不是我需要的。有没有办法告诉iconv(或者有等效的编码)不要在UTF-8结果中放入BOM?

  • 本文向大家介绍复制MySQL数据库而不使用mysqldump?,包括了复制MySQL数据库而不使用mysqldump?的使用技巧和注意事项,需要的朋友参考一下 要复制MySQL数据库,语法如下- 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是复制MySQL数据库的查询- 使用select语句显示新表中的所有记录- 这将产