0

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

我们可以使用任何查询来识别这些字符以清除它们吗?

谢谢,

4

2 回答 2

0

你可能会注意到类似这个'bug' 的东西。“坏字符”很可能是 UTF-8 控制字符(例如 \x80)。您也许可以使用类似的查询来识别它们

SELECT bar FROM foo WHERE bar LIKE LOCATE(UNHEX(80), bar)!=0

从那个链接的错误中,他们建议使用 typeBLOB来存储 windows 文件中的文本:

如果您需要存储 windows 文件(甚至是文本文件),请使用 BLOB(带有附加编码字段)而不是 TEXT。优于 3 字节 UTF-8 和多层编码开销。

看看这个 Q/A(这都是关于你的客户端编码的SET NAMES

于 2012-05-22T15:56:22.417 回答
0

我假设您UTF8在填写数据时设置了连接字符集。

MySQL?用(问号)替换不可转换的字符:

SELECT  CONVERT('тест' USING latin1);

----
????

问题在于区分合法的问号和非法的问号。

通常,单词开头的问号是不祥之兆,因此:

SELECT  *
FROM    mytable
WHERE   myfield RLIKE '\\?[[:alnum:]]'

应该给一个好的开始。

于 2012-05-22T15:48:45.137 回答