我有一个包含客户输入数据的MySQL数据库。
告诉客户他们的数据应该只使用UTF-8进行编码,但目前并没有强制执行,一些人正在使用未经UTF-8编码的字符。
我们打算添加一些检查,但是如何检测到未使用UTF-8编码的数据呢?是否有SQL或MySQL查询(或管理员命令)可以显示未经UTF-8编码的数据?
告诉客户他们的数据应该只使用UTF-8进行编码,但目前并没有强制执行,一些人正在使用未经UTF-8编码的字符。
我们打算添加一些检查,但是如何检测到未使用UTF-8编码的数据呢?是否有SQL或MySQL查询(或管理员命令)可以显示未经UTF-8编码的数据?
LENGTH('this is a test') <> CHAR_LENGTH('this is a test')
怎样被发现是没有使用UTF-8编码的呢?该字符串在LENGTH()
和CHAR_LENGTH()
中返回的结果是相同的。CHAR_LENGTH()
返回参数中的字符数,而LENGTH()
返回一个字符串的字节长度,在只包含ASCII编码字符的情况下,这两者是相同的。 - Hannah Vernonthis
肯定是以ASCII编码的,并且具有相同的长度和字符长度,除非我理解错了。 - Hannah Vernonthis
在Latin-1和UTF-8中使用相同的字节序列表示。而thát
则不是,这正是OP想要解决的问题。"未以UTF-8编码"并不等同于"以ASCII编码"的问题。 - mustaccio