Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-UNHEX(十六进制(UTF-8))问题_Mysql - Fatal编程技术网

MySQL-UNHEX(十六进制(UTF-8))问题

MySQL-UNHEX(十六进制(UTF-8))问题,mysql,Mysql,我有一个包含UTF-8字符的数据库,但显示不正确。我想我可以用一根柱子列条件,以了解哪些字段中包含UTF-8字符。结果相当有趣: id | content | HEX(content) | UNHEX(HEX(content)) LIKE '%c299%' | UNHEX(HEX(content)) LIKE '%FFF%' | UNHEX(HEX(content)) 49829102 | | C299 | 0

我有一个包含UTF-8字符的数据库,但显示不正确。我想我可以用一根柱子列条件,以了解哪些字段中包含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
这怎么可能?我怎么可能找到包含此字符的行

-edit2:因为我的编辑可能在JamWaffles修复我漂亮的数据表时被删除了,现在又是这样:当编辑器去掉UTF-8字符时,如果不清楚,第一行的内容是\uc299


-edit3:我已经找出了问题所在-UnhexExcent的实际表示是错误的-要显示我的多字节字符,我必须执行以下操作:选择UnhexSubstrExcent,1。不幸的是,unhex299不能像unhex2+UNHEX99那样工作,所以它回到了绘图板上。

有两种方法可以确定字符串是否包含UTF-8特定字符。第一个是查看字符串的值是否超出ASCII字符集:

SELECT _utf8 'amńbcd' REGEXP '[^[.NUL.]-[.DEL.]]';
第二个是比较二进制和字符长度:

SELECT LENGTH(_utf8 'amńbcd') <> CHAR_LENGTH(_utf8 'amńbcd');
两者都返回TRUE

请参阅

请发布您的表的SHOW CREATE TABLE结果,以便我们可以查看架构。另外,请发布您为获得这些结果而运行的完整查询。@Ike Walker Sure:table:CREATE table`table``id`int11 NOT NULL AUTO_INCREMENT,`content`longtext NOT NULL,PRIMARY KEY`id`ENGINE=MyISAM AUTO_INCREMENT=874625486 DEFAULT CHARSET=utf8查询:选择id,content,HEX content,UNHEX十六进制内容,如“%c299%”,取消释放十六进制内容,如“%FFF%”,从“表”中取消释放十六进制内容`