首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL服务器隐式支持编码转换吗?

MySQL服务器隐式支持编码转换吗?
EN

Stack Overflow用户
提问于 2021-12-15 09:35:17
回答 1查看 47关注 0票数 3

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

也就是说,通常我会按

代码语言:javascript
复制
SELECT * FROM table ORDER BY CONVERT(field USING gbk) COLLATE gbk_chinese_ci

然而,出于某种原因,CONVERT是不允许的。因此,我试图通过

代码语言:javascript
复制
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 params只定义通信的字符集,而不是定义最终存储的数据的字符集吗?

编辑

评论说服务器确实会转换它们!谢谢你们!

我进一步感到困惑的是,只有一个字段被设置为使用gbk,而其他所有字段都被留给使用utf8。这意味着服务器的字符集在全局上仍然应该是utf8,但是仅针对该字段在本地使用gbk

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

代码语言:javascript
复制
INSERT INTO table (field_gbk, field_utf8) VALUES ("a", "b");

服务器是否:

utf8;

  • Convert

  • 接收到 "a“到gbk的整个语句,并将其存储;

  • 存储"b”作为-是指向数据库的?

非常感谢各位!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-16 22:58:02

是。

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

MySQL在INSERTs行时从一种编码转换为另一种编码。类似地,当SELECTing时,它会以另一种方式进行转换。

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

您使用的是Java?characterEncoding=utf8 and useUnicode=true,它用于声明客户端。

"gbk“代表一列?发现。该列的处理方式将与其他列不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70361330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档