【发布时间】:2012-06-26 11:19:20
【问题描述】:
我正在尝试将 MySQL 3.23.58 数据库移动到另一台运行 5.5.19 的服务器。
旧版本指定了 latin1 编码,据我所知,底层数据确实是 latin1。我尝试了很多东西,主要是:
- 使用 mysqldump 和 latin1 编码标志从终端导出。
- 在 vim 中进行编辑以将“TYPE=InnoDB”更改为“ENGINE=InnoDB”以兼容 MySQL 5。
- 从终端导入到新服务器。
浏览旧服务器(在 Mac 上的 Sequel Pro 或 PC 上的 MySQL 查询浏览器中),特殊字符并不总是正确显示,但它们就在那里(查看十六进制的二进制文件)。 (在任何情况下,它都适用于 PHP Web 应用程序。)
浏览新服务器时,所有特殊字符似乎都已被问号替换。我知道如果指定了错误的编码,有时特殊字符会显示为问号(或 �)。但这些似乎是二进制级别的真正直接编码的 ASCII 问号。特殊字符(主要是弯引号和破折号)在导出/导入中似乎已丢失或损坏。
知道为什么吗?
我知道编码可能会出现很多问题,其中有很多不同的问题。我已经阅读了几天(这里和其他地方)并尝试设置所有正确的字符编码,尝试 UTF-8,尝试转换和转换,尝试 Sequel Pro 的导出/导入(而不是终端)等等。但是我被难住了。
【问题讨论】:
-
如果您导出为 SQL 语句,您会看到同样的问题吗?从您的问题来看,导出的文件听起来不错(您已经在十六进制编辑器中查看过),但这是造成问题的导入。如果 SQL INSERT 语句是磁盘上的纯文本文件并且所有字符都以 UTF-8 或 latin1 显示,我看不出为什么它会失败。尝试使用您遇到问题的一条记录。
-
这是一个撇号(或右单引号)在 vim 导出文件中的样子(截图):cl.ly/1C2m0d1M2y0g1J1C3d0P -- 一个 。那是某种vim有向图吗? (Quadgraph?)这里什么都不匹配:vimdoc.sourceforge.net/htmldoc/digraph.html#digraph-table
-
一个破折号显示为 。
-
MySQL 3.23.58 是否有
character_set_client,如果有,当您使用 Sequel Pro 或 MySQL 查询浏览器查看数据时,它设置为什么?客户端程序中设置的编码是什么?当您导入数据时,您正在做mysql --default-character-set=latin1 ...?当您看到?字符时,您要导入的数据库和正在查看的表的字符编码是什么?
标签: mysql utf-8 character-encoding latin1