将 trim binary/unicoded 字符串与普通字符串进行比较?

Compare and trim binary/unicoded string to normal string?

我正在使用下面的 mysql 查询来检查哪些记录与修剪值不同

SELECT id, BINARY(username) as binary_username, TRIM(username) as trim_username FROM table.

以上查询returns二进制值和修剪后的值如下所示。

mysql 查询结果:

上图中突出显示的值表明二进制值与修剪后的值不同。

我尝试了以下两件事:

但他们都返回空记录。

如何使用 mysql 获取这些突出显示的条目?

编辑 1:我在查询结果中添加了 HEX 值

SELECT id, BINARY(username) as binary_username, TRIM(username) as trim_username, HEX(username) as hex_username FROM table

提前致谢...

为避免存储、修整等尾随零,请使用 VARBINARY 而不是 BINARY。请告诉我,为什么您要对文本字符串使用 BINARY?

SELECT HEX(username) FROM ...以便我们进一步诊断问题。该屏幕截图令人怀疑——我们不知道客户做了什么来“修复”输出。

好吧,其中 none 是用 UTF-8 编码的,也不是我能识别的任何其他编码。 'bad' 字符(02、04、0c 17)几乎在所有编码中都是“控制代码”。 (“Unicode”不是一种编码方式,所以不相关。)

您想要一个用于测试控制代码的 REGEXP 吗?

在 PHP 中,json_encode 有一个 JSON_UNESCAPED_UNICODE 的选项。参见 https://www.php.net/manual/en/function.json-encode.php

但这会生成 \u1234 类型的文本。

将二进制数据存储到MySQL时,使用PDO或mysqli中的绑定或转义机制。