我正在尝试将
MySQL 3.23.58数据库移动到运行5.5.19的其他服务器上.
旧的指定了latin1编码,据我所知,基础数据确实是老实说latin1.我尝试了很多东西,主要是:
>使用mysqldump和latin1编码标志从终端导出.
>在vim中编辑以将“TYPE = InnoDB”更改为“ENGINE = InnoDB”以获得MySQL 5的兼容性.
>从终端导入新服务器.
浏览旧服务器(在Sequel Pro for Mac或PC上的MySQL查询浏览器中),特殊字符并不总是正确显示,但它们在那里(以十六进制查看二进制文件). (无论如何,它适用于PHP Web应用程序.)
浏览新服务器时,所有特殊字符似乎都被问号替换.我知道如果指定了错误的编码,有时特殊字符可以显示为问号(或 ).但这些似乎是二进制级别的真正的直接编码ASCII问号.在导出/导入中,特殊字符(主要是卷曲引号和短划线)似乎已丢失或被破坏.
知道为什么吗?
我知道编码有很多可能出错的地方,有很多不同的东西都有问题.我已经阅读了好几天(这里和其他地方),并尝试设置所有正确的字符编码,尝试UTF-8,尝试投射和转换,尝试Sequel Pro的导出/导入(而不是终端)等.但我很难过.
最佳答案 好,看起来我们已经缩小了你的问题.我找到了
this post
If your text editor is vim, then most likely the “<92>” is the
hexadecimal code of an extended ASCII character. In this case, it is
Hex(92) or Oct(222) or Dec(146) , which is “right single quotation
mark”; not to confused with “single quote” which is ASCII Dec code 39.One way to remove all non-ASCII characters from your file could be –
perl -plne 's/[^[:ascii:]]//g' <your_file>
否则只需搜索并替换“< 92>”和“< 97>”在导出的文件中具有适当的字符.
[编辑]
我不是VIM用户,但这篇文章解决了replacing the <92> smart quote characters的问题
For each value that you see in your file, just do a string
substitution, like so:
:%s/<93>/\’/g
of course, you can’t just type that <93> in there, so to get it in
there you useCTRL-V x 93
which inserts hex 93 in place.
In recently exported CSV’s from excel, I’ve seen hex 91-97.