mysql 字段编码 讲解_MySql字符编码详解

本文探讨了MySQL字符集支持的四个层次:服务器、数据库、数据表和行,并指出防止乱码的关键在于数据库连接编码。MySQL能自动处理不同编码间的转换,设计数据库时应考虑字符集的兼容性、存储效率和减少编码转换环节。例如,若需存储多种语言,UTF-8是最佳选择;若只存储简体中文,GBK更节省空间。在实际应用中,应根据需求选择合适的编码策略。

MySQL 对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和行()。

查看:

6e0efe269efabf61f25ed5de3fed4304.png

mysqli_query($conn,"set names gb2312");

实质是设置了三个:

上面我们看到,要让 MySQL 不出现乱码,要点是在于数据库连接的编码方式,而数据库表的编码方式并不重要,MySQL 会自动做好编码转换工作。

·数据库表的编码方式

上面我们看到,要让 MySQL 不出现乱码,要点是在于数据库连接的编码方式,而数据库表的编码方式并不重要,MySQL 会自动做好编码转换工作。

那么在做数据库设计的时候,怎么选择编码方式呢?其实这时候考虑的应该是另外几个因素,比如:

1. 字符集的兼容性。如果预期将在一个字段中同时保存简体、繁体、日文等字符,那你就必须选择一个能同时容纳这几种字符集的编码方式,一般来说,UTF-8 是最好的选择。

2. 存储效率。如果预期仅保存简体中文,那么选择 GBK 会比 UTF-8 的存储效率高一些。不过,似乎大多数情况下,这一因素并不很重要。

3. 结合实际的应用情况,尽量减少数据库访问过程中的编码转换环节。如下图所示的传输过程,其中“C转换”是客户端的转换工作(可能是应用程序负责,也可能是 Driver 负责,比如 JDBC Driver),“S转换”是服务端的编码转换(由 MySQL 自动进行)。

客户端程序 ------------> 客户端接口 ----------> 服务端接口 --------------> 数据库存储

UCS2/GBK/…  C转换        编码传输         S转换   UTF-8/GBK/…

客户端程序

UCS2/GBK/…  C转换        编码传输         S转换   UTF-8/GBK/…

参考:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值