タイムゾーンと同様に、文字エンコードは常に問題の原因です。
LATIN1アクセント付き文字または記号、あるいはUTF-8マルチバイト文字の最初の文字である「high-ASCII」文字を探すことができます。少し騙さない限り、違いを見分けるのは簡単ではありません。
どのエンコーディングが正しいかを判断するには、SELECT
するだけです。 2つの異なるバージョンと視覚的に比較します。次に例を示します:
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