我正在尝试将一个MySQL 3.23.58数据库移动到运行5.5.19的另一个服务器上。
旧版本指定了latin1编码,据我所知,底层数据确实是latin1。我尝试过很多事情,主要是:
浏览旧服务器(在续集properly,或在PC上使用MySQL查询浏览器),特殊字符并不总是显示正确,但他们在那里(查看二进制十六进制)。(在任何情况下,它都适用于PHP web应用程序。)
浏览新服务器时,所有特殊字符似乎都被问号所取代。我知道,如果指定了错误的编码,有时特殊字符可以显示为问号(或�)。但在二进制级别上,这些似乎是真正的直译编码的ASCII问号。特殊字符(主要是卷曲引号和破折号)似乎在出口/进口中丢失或销毁。
知道为什么吗?
我知道编码有很多错误,有很多不同的错误。我已经读了好几天了(这里和其他地方),尝试设置所有正确的字符编码,尝试UTF-8,尝试转换和转换,尝试续集Pro的导出/导入(相对于终端),等等,但我感到困惑。
发布于 2012-06-26 09:35:50
很好,看来我们把你的问题缩小了。我找到了这个职位
如果您的文本编辑器是vim,那么"<92>“很可能是扩展的ASCII字符的十六进制代码。在这种情况下,是十六进制(92)或Oct(222)或Dec(146),它是“正确的单引号”;不要混淆“单引号”是ASCII Dec代码39。 从文件中删除所有非ASCII字符的一种方法是-
perl -plne 's/[^[:ascii:]]//g' <your_file>
否则,只需搜索并将导出文件中的"<92>“和"<97>”替换为适当的字符即可。
编辑
我不是VIM用户,但这篇文章针对的是replacing the <92> smart quote characters问题
对于文件中看到的每个值,只需执行字符串替换,如下所示:
:%s/<93>/\’/g当然,您不能只在那里键入那个<93>,所以要让它在其中使用 CTRL-V x 93 其中插入了十六进制93的位置。 在最近从excel出口的CSV中,我看到了91-97。
https://stackoverflow.com/questions/11185324
复制相似问题