1

我刚刚将我正在使用的 MySQL 升级到 MySQL 5.6.14 版本。当我发出这个查询时,

SELECT FROM_BASE64(TO_BASE64('MySQL'));

我收到 4d7953514c(十六进制值)作为答案,而不是“MySQL”。实际上是什么问题?有什么我必须做的才能取消它吗?

注意:我的 MySQL 中的 UNHEX 函数也返回相同的内容。如果给 UNHEX 函数一个十六进制值,我将再次收到相同的十六进制值。

提前TQ

4

1 回答 1

0

MySQL 客户端默认使用十六进制表示法显示二进制数据。的结果是带有排序规则,并且鉴于原始排序规则/字符集已经丢失,无法猜测生成这些字节时使用了什么字符集。因此,这个特定的客户端应用程序(其他人可能会采取不同的做法)选择更安全的路线并仅显示其十六进制表示法。TO_BASE64VAR_STRINGbinaryFROM_BASE64

--skip-binary-as-hex您可以通过在启动 mysql 客户端时提供选项来更改此行为。请注意,如果您不知道数据的来源,这会产生意想不到的结果。有关如何解决此问题的其他方法,请参阅文档。--binary-as-hex

我还建议打开显示结果集元数据,因为它可以让您更好地了解导致此行为的原因。

于 2021-11-19T11:04:38.303 回答