ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL导出/导入中会丢失特殊字符

2019-07-04 09:02:58  阅读:309  来源: 互联网

标签:mysql utf-8 character-encoding latin1


我正在尝试将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 use

CTRL-V x 93

which inserts hex 93 in place.

In recently exported CSV’s from excel, I’ve seen hex 91-97.

标签:mysql,utf-8,character-encoding,latin1
来源: https://codeday.me/bug/20190704/1375349.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有