gpt4 book ai didi

MySQL - UNHEX(HEX(UTF-8)) 问题

转载 作者:可可西里 更新时间:2023-11-01 08:53:13 26 4
gpt4 key购买 nike

我有一个包含 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

这怎么可能,我怎样才能找到包含这个字符的行?

-- edit(2):由于我的编辑已被删除(可能是在 JamWaffles 修复我漂亮的数据表时),这里又是:由于编辑器删除了 UTF-8 字符,第一行的内容是\uc299 (如果不清楚;))

-- edit(3):我已经弄清楚问题所在 - UNHEX(HEX(content)) 的实际表示是错误的 - 显示我必须做的多字节字符以下内容:SELECT UNHEX(SUBSTR(HEX(content),1)))。遗憾的是 UNHEX(C299) 不能像 UNHEX(C2)+UNHEX(99) 那样工作,所以它又回到了绘图板。

最佳答案

有两种方法可以确定字符串是否包含 UTF-8 特定字符。首先是查看字符串是否具有 ASCII 字符集之外的值:

SELECT _utf8 'amńbcd' REGEXP '[^[.NUL.]-[.DEL.]]';

二是比较二进制和字符长度:

SELECT LENGTH(_utf8 'amńbcd') <> CHAR_LENGTH(_utf8 'amńbcd');

两者都返回 TRUE

参见 http://sqlfiddle.com/#!2/d41d8/9811

关于MySQL - UNHEX(HEX(UTF-8)) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com