现在的位置: 首页 > 综合 > 正文

如何设置mysql数据库编码

2012年09月16日 ⁄ 综合 ⁄ 共 821字 ⁄ 字号 评论关闭

数据库编码是一个很重要的问题, 推荐网页和数据库都用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服务无法启动.

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

抱歉!评论已关闭.