如何设置mysql数据库编码

本文讨论了MySQL数据库中的编码问题,特别是UTF-8编码的重要性及其对中文字符的支持。文章介绍了几种设置MySQL编码的方法,包括创建数据库时指定编码、修改my.ini文件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库编码是一个很重要的问题, 推荐网页和数据库都用utf8编码, utf8编码, 对于英文和ansi是一样的, 效率非常高, 但是对于中文, 每个字符占3个字节, 效率会变低, 但是, 这种编码使用广泛, 相对于致命的乱码问题, 考虑到优化和压缩, 存储和传输的效率影响也不是很大.

mysql数据库的默认编码是Latin, 好像是瑞典语, 而不是国际化标准的utf8, 但是我们会发现, 即使这样, 仍然能够存储中文字符, 数据取出来也是正确的. 实际上, 这是因为即使是以乱码的方式存储在数据库中, 因为取出来后是一个逆过程, 有点负负得正的意思, 所以看到的仍然可能是正确的字符. 但是, 这是不能保证的, 因为字符集是不对等的, 一个字符集的某些字符在另一个字符集如果没有的话, 会被替换为缺省字符, 这种情况就无法还原了, 具体mysql的存储时如果处理, 我们不去深究, 但是设置为正确的编码是安全可靠的方式.

打开mysql控制台, 查看数据库编码的命令是: show variables like 'char%'; 这个命令会列出各种编码设置. 但是如果更改数据库的默认编码呢? 实际上有N种选择:

1. 手动设置每个字段的编码, 这个不是我们的初衷, 太麻烦.

2. 创建数据库的时候设置编码, 命令如下: CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 这个方式比较简单了, 一旦创建了数据库, 它下面的表自动都是指定编码了.

3. 修改mysql的默认编码, 打开my.ini文件, 5.5版本以后是在[mysqld]下添加character_set_server=utf8, 而5.5以前是在[mysql]和[mysqld]下都添加default-character-set, 注意是不同的, 添加错误会导致mysql服务无法启动.

修改数据库的默认编码还影响它输出的错误信息, 如果编码不对的话, 一旦数据库出现错误, 给出的错误信息有中文的话都是乱码的.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值