如何查看MySQL列中存储的原始字节?

如何查看MySQL列中存储的原始字节?,mysql,perl,encoding,Mysql,Perl,Encoding,我将MySQL表正确设置为UTF-8字符集。我怀疑插入到我的一列中的某些数据是双重编码的。我希望看到一个不间断的空格字符(UTF-8 0xC2A0),但从表中选择此列时得到的是四个八位字节(0xC3A2 0xC2A0)。如果有人将UTF-8 0xC2A0视为ISO-8859-1,然后在插入MySQL之前再次尝试将其编码为UTF-8,我希望看到的就是这一点 在上面的测试中,我看到了四个八位字节,其中包括使用Perl的DBD::MySQL从MySQL中选择此列。我想把Perl和DBD::mysql从

我将MySQL表正确设置为UTF-8字符集。我怀疑插入到我的一列中的某些数据是双重编码的。我希望看到一个不间断的空格字符(UTF-8 0xC2A0),但从表中选择此列时得到的是四个八位字节(0xC3A2 0xC2A0)。如果有人将UTF-8 0xC2A0视为ISO-8859-1,然后在插入MySQL之前再次尝试将其编码为UTF-8,我希望看到的就是这一点


在上面的测试中,我看到了四个八位字节,其中包括使用Perl的DBD::MySQL从MySQL中选择此列。我想把Perl和DBD::mysql从等式中去掉,以验证这四个八位字节实际上是mysql存储的。有没有办法直接用SQL查询来实现这一点?

为什么不试试二进制运算符呢

“二进制运算符将其后面的字符串转换为二进制字符串。这是强制逐字节而不是逐字符进行列比较的一种简单方法。”


希望这有帮助

您可以尝试使用HEX()函数[。从文档中,
选择HEX('abc')
返回
616263

HEX执行了该操作,看起来我对表中的双重编码是正确的。我需要查看上游系统以处理编码问题。Ryan!你对UTF8了解得这么多,怎么能正确猜测呢!?
mysql> SELECT HEX(name) FROM mytable;
+-----------+
| hex(name) |
+-----------+
| 4142C2A0  | 
+-----------+