首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否使用MySQL查询来识别错误字符?

是否使用MySQL查询来识别错误字符?
EN

Stack Overflow用户
提问于 2012-05-22 23:34:18
回答 2查看 1.2K关注 0票数 0

我们有一些表格是用拉丁字符集设置的,而不是UTF-8,它允许坏字符输入到表格中,通常的罪魁祸首是人们从Word或Outlook复制/粘贴这些讨厌的隐藏字符...

有没有什么查询可以用来识别这些字符来清理它们?

谢谢,

EN

回答 2

Stack Overflow用户

发布于 2012-05-22 23:48:45

我假设在您填充数据时,您的连接字符集设置为UTF8

MySQL将无法转换的字符替换为? (问号):

代码语言:javascript
复制
SELECT  CONVERT('тест' USING latin1);

----
????

问题是如何区分合法和非法的问号。

通常,单词开头的问号是一个不好的信号,所以这是:

代码语言:javascript
复制
SELECT  *
FROM    mytable
WHERE   myfield RLIKE '\\?[[:alnum:]]'

应该会有一个好的开始。

票数 0
EN

Stack Overflow用户

发布于 2012-05-22 23:56:22

您可能注意到了类似这样的'bug'。“错误字符”很可能是UTF-8控制字符(例如\x80)。您也许能够使用如下查询来识别它们

代码语言:javascript
复制
SELECT bar FROM foo WHERE bar LIKE LOCATE(UNHEX(80), bar)!=0

从这个链接的bug中,他们建议使用类型BLOB来存储windows文件的文本:

如果您需要存储windows文件(甚至是文本文件),则

使用BLOB (带有附加编码字段)而不是文本。优于3字节UTF-8和多层编码开销。

看看this Q/A (这一切都是关于你的客户端编码,也就是SET NAMES )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10705259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档