我试图将MySQL 3.23.58数据库移动到运行5.5.19的不同服务器。在MySQL导出/导入中丢失特殊字符
旧的具有latin1编码指定,并且据我所知底层数据的确是老实拉丁。我已经尝试了很多东西,主要是:
- 从终端输出mysqldump和latin1编码标志。
- 在vim中编辑将“TYPE = InnoDB”更改为“ENGINE = InnoDB”以实现MySQL 5的兼容性。
- 从终端导入到新的服务器。
浏览旧服务器(在续集的Mac Pro,或MySQL查询在PC浏览器),特殊字符不会总是显示正常,但他们在那里(看着十六进制二进制)。 (在任何情况下,它都适用于PHP Web应用程序。)
浏览新服务器时,所有特殊字符似乎都被问号所代替。我知道如果指定了错误的编码,有时候特殊字符会显示为问号(或 )。但是这些似乎是二进制级别的真正的直接编码的ASCII问号。在出口/进口中,特殊字符(主要是曲线的引号和破折号)似乎已经丢失或被破坏。
任何想法为什么?
我知道有许多事情可能会出错编码,有很多不同的事情有错。我已经阅读了几天(在这里和其他地方),并尝试设置所有正确的字符编码,尝试UTF-8,尝试铸造和转换,尝试过Sequel Pro的导出/导入(而不是终端)等。我很难过。
如果您导出为SQL语句,您是否看到相同的问题?从你的问题,它听起来像导出的文件是好的(你已经在十六进制编辑器),但这是导致问题的导入。我无法明白为什么SQL INSERT语句会失败,如果它是磁盘上的纯文本文件并且所有字符都以UTF-8或latin1表示。试一下你遇到的一条记录。 – Brad
这是一个撇号(或右单引号)看起来像在VIM(截图)导出的文件:http://cl.ly/1C2m0d1M2y0g1J1C3d0P - 一个<92>。那是一种vim有向图吗? (?Quadgraph)这里并不匹配任何东西:http://vimdoc.sourceforge.net/htmldoc/digraph.html#digraph-table – Toph
而且一个破折号显示为<97>。 – Toph