我有一个包含UTF-8字符的数据库,但它们显示不正确。我想使用UNHEX(HEX(column)) != column
条件来知道哪些字段中有UTF-8字符。结果非常有趣:
id | content | HEX(content) | UNHEX(HEX(content)) LIKE '%c299%' | UNHEX(HEX(content)) LIKE '%FFF%' | UNHEX(HEX(content))
49829102 | | C299 | 0 | 0 | c299
874625485 | FFF | 464646 | 0 | 1 | FFF
这怎么可能呢?可能我如何找到包含这个字符的行呢?-- 编辑(2):由于编辑时我的美丽数据表被JamWaffles修复时,我的编辑已被删除,所以在这里再次编辑:由于编辑器剥离了UTF-8字符,第一行中的内容是\uc299(如果不清楚的话;)-- 编辑(3):我弄清楚问题出在哪里了 -
UNHEX(HEX(content))
的实际表示是错误的 - 要显示我的多字节字符,我必须执行以下操作:SELECT UNHEX(SUBSTR(HEX(content),1)))
。不幸的是,UNHEX(C299)不像UNHEX(C2)+UNHEX(99)那样工作,所以又回到了原点。
SHOW CREATE TABLE
结果,以便我们查看模式。此外,请发布您运行以获取这些结果的完整查询。 - Ike WalkerCREATE TABLE \
table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` longtext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=874625486 DEFAULT CHARSET=utf8`查询语句:SELECT id, content, HEX( content ) , UNHEX( HEX( content ) ) LIKE '%c299%', UNHEX( HEX( content ) ) LIKE '%FFF%', UNHEX( HEX( content ) ) FROM \
table`` - eithed