我正在尝试将 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的导出/导入(而不是终端)等。但是我很困惑。
很好,看来我们已经缩小了您的问题范围。我发现这个帖子 http://www.unix.com/shell-programming-scripting/175390-removing-92-character.html
如果您的文本编辑器是 vim,那么“”很可能是
扩展 ASCII 字符的十六进制代码。在这种情况下,它是
Hex(92) 或 Oct(222) 或 Dec(146) ,即“右单引号
mark”;不要与“单引号”混淆,后者是 ASCII Dec 代码 39。
从文件中删除所有非 ASCII 字符的一种方法可能是 -
perl -plne 's/[^[:ascii:]]//g' <your_file>
否则,只需在导出的文件中搜索“”和“”并将其替换为适当的字符即可。
[Edit]
我不是 VIM 用户,但这篇文章解决了以下问题替换 智能引号字符 http://aditya.sublucid.com/2008/01/18/replacing-those-pesky-smart-quotes-in-vim/
对于您在文件中看到的每个值,只需执行一个字符串
替换,像这样:
:%s/<93>/\’/g
当然,你不能只在那里输入,所以要把它输入
你在那里使用
CTRL-V x 93
将十六进制 93 插入到位。
在最近从 Excel 导出的 CSV 中,我看到了十六进制 91-97。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)