我正在尝试将 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 的导出/导入(而不是终端)等等。但是我难住了。