gpt4 book ai didi

mysql - MySQL 服务器是否隐式支持编码转换?

转载 作者:行者123 更新时间:2023-12-05 05:51:34 25 4
gpt4 key购买 nike

我需要在字段的特定编码上实现排序的SELECT没有 CONVERT

也就是说,通常我会这样做

SELECT * FROM table ORDER BY CONVERT(field USING gbk) COLLATE gbk_chinese_ci

但是由于某些原因 CONVERT 是不允许的。因此,我尝试通过

ALTER TABLE table MODIFY field VARCHAR(xx) CHARACTER SET gbk COLLATE gbk_chinese_ci;

SELECT * FROM table ORDER BY field

它有效。那挺好的。但是我担心编码问题。

与 MySQL 服务器的连接包括参数 characterEncoding=utf8useUnicode=true。我在MySQL的官方文档中还找不到这些参数的解释,但我想这些保证了客户端和服务器之间的通信应该是utf-8。

这带来了问题。 MySQL服务器接收数据时是否隐式将utf-8格式的数据转换为gbk格式? GET参数是否只定义了通信的字符集而不是最终存储数据的字符集?


编辑

评论说服务器确实转换了它们!谢谢大家!

我更困惑的是,只有一个字段设置为使用 gbk,而其他所有字段都被设置为使用 utf8。这意味着服务器的字符集在全局范围内仍应为 utf8,但在该字段的本地范围内仍应为 gbk

假设现在我将这行脚本发送到服务器

INSERT INTO table (field_gbk, field_utf8) VALUES ("a", "b");

服务器是否:

  1. utf8中接收整个语句;
  2. “a”转换为gbk并存储;和
  3. 按原样将“b”存储到数据库中?

非常感谢你们!

最佳答案

是的。

  • 您在连接时指定客户端的编码。
  • 您指定要插入的列的编码(“字符集”)。

MySQL 在 INSERTs 行时从一种编码转换为另一种编码。同样,它在 SELECTing 时转换为另一种方式。

CONVERT 函数不应该(通常)用于任何事情。

您正在使用 Java? characterEncoding=utf8 和 useUnicode=true 用于声明客户端。

“gbk”代表单列?寻找。该列的处理方式与其他列不同。

关于mysql - MySQL 服务器是否隐式支持编码转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70361330/

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