首页 / MYSQL / mysql编码问题总结
mysql编码问题总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql编码问题总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2236字,纯文字阅读大概需要4分钟。
内容图文
![mysql编码问题总结](/upload/InfoBanner/zyjiaocheng/454/02eb9cae05184e63808cb913624f360c.jpg)
1. mysql字符集相关的变量:
- character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集
– 还有以collation_开头的同上面对应的变量,用来描述字符序。
2. mysql提供了不同粒度的字符集控制:
控制粒度 | 查看字符集 | |
|
character_set_connection | |
字段(field) | show full fields from TableName | |
表(table) | show create table TableName | |
数据库(database) | character_set_database 或 show create database DataBaseName | |
mysql服务器(server) | character_set_server |
在创建数据库、表、字段的时候,各个粒度上的字符集都是可以指定的,也可以不指定,这样的话就使用上一级默认的字符集。
下面分别看看创建数据库、表、字段时对字符集的控制。
3.1 创建数据库
(1)查看当前系统server字符集是latin1
(2)创建数据库(不指定编码)
可以看到新创建的数据库的字符集和server的字符集相同
(3)指定数据库字符集
新创建的数据库字符集和server字符集并不相同,而是使用了自己的字符集utf8
(4)修改server的字符集为utf8
(5)再次使用默认字符集创建数据库
新的数据库使用了和server相同的编码
3.2 创建表
(1)当前字符集设置
数据库编码为latin1
(2) 创建表
name字段指定了字符集为uft8, address字段采用默认设置
(3) 插入中文测试
可以看到,采用name字段正常显示,address字段出现了乱码
4. 实践建议
实践当中,建议创建数据库的时候就指定好db的字符集,如下:
create database testdb default charset utf8
之后创建表、字段的时候可以不指定字符集,默认集成db的字符集设定。
当然db创建好之后也可以修改db的编码:
ALTER DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表的编码:ALTER TABLE test DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改字段的编码: ALTER TABLE test CHANGE address address VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
修改了address字段的编码,原先的数据仍然不能正常显示,因为之前插入数据的时候,客户端传入的是utf8格式,存在latin1无法编码的字符,数据在
进程字符集转换的时候出现了损坏,查询的时候已经无法得到完整的插入时的数据了
但是新插入的中文数据可以正常显示
参考:
mysql 更改库表字段的编码
mysql 字符集设置
mysql编码问题总结
标签:
本文系统来源:http://www.cnblogs.com/undefinedz/p/4696760.html
内容总结
以上是互联网集市为您收集整理的mysql编码问题总结全部内容,希望文章能够帮你解决mysql编码问题总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。