像时区一样,字符编码一直是问题的根源。
您可以做的是查找任何“高ASCII”字符,因为这些字符可能是LATIN1重音字符或符号,也可能是UTF-8多字节字符的第一个。除非您作弊,否则要说出区别并不容易。
为了弄清楚哪种编码是正确的,您只需使用
SELECt两个不同的版本并进行直观比较。这是一个例子:
SELECT ConVERT(ConVERT(name USING BINARY) USING latin1) AS latin1, ConVERT(ConVERT(name USING BINARY) USING utf8) AS utf8 FROM users WHERe ConVERT(name USING BINARY) RLIKE CONCAt('[', UNHEx('80'), '-', UNHEx('FF'), ']')这使得异常复杂,因为MySQL正则表达式引擎似乎忽略了类似的事情
x80,因此有必要使用该
UNHEx()方法。
这样会产生如下结果:
latin1 utf8----------------------------------------Björn Björn



