详细解决方案
(六)mysql中的字符集
热度:300 发布时间:2016-05-05 17:13:38
概述
??从本质上来讲,计算机只识别二进制代码,因此,不论计算机程序还是其处理的数据,最终都必须转化为二进制码,计算机才能识别。人们给每一个文字符号编码以便计算机识别处理,这就是计算机字符集的由来。
选择合适的字符集
MySQL5.6支持几十种字符集,包括UCS-2、UTF-16、UTF-16LE、UTF-32、UTF-8、utf8mb4等Unicode字符集,选择字符集可以考虑如下几个因素:
- 满足应用支持语言需求,如果应用需要处理各式各样的文字,应该选择Unicode编码,对于MySQL,建议为UTF-8;
- 如果应用中涉及已有数据导入,要充分考虑数据库字符集对已有数据的兼容性。
- 如果数据库只需要支持一般中文,数据量大,性能要求较高,那可以选择双字节定长编码的中文字符集,比如GBK,因为相对于UTF-8,GBK比较小,每个汉字只占2个字节,utf-8汉字需要3个字节;相反,如果主要处理英文字符,选择UTF-8更好,因为GBK,UCS-2,UTF-16中的西文字符编码都是2个字节。
- 如果数据库需要做大量的字符运算,选择定长字符集更好一些。
- 如果所有的客户端程序都支持相同的字符集,则优先选择该字符集作为数据库的字符集。
常用字符集比较:
MySQL字符集
- MySQL支持在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以使用不同的字符集。
- MySQL字符集包括
字符集
和校对规则
;其中字符集用来定义MySQL存储字符串的方式,校对规则用来定义字符串比较方式,字符集与校对规则是一对多的关系。 - MySQL有4个级别的默认设置:服务器级,数据库级,表级,字段级。服务器级可以在MySQL配置文件(my.cnf)中设置
character-set-server=utf-8
;其他是创建时候设置。 - 对于实际应用中, 还存在客户端和服务器之间的字符集和校对规则设置。MySQL提供3个参数设置:
character_set_client
、character_set_connection
、character_set_results
分别代表客户端、连接、返回结果的字符集。通常不会单独设置这3个参数,可以通过命令:set names ***
来设置,还可以设置my.cnf中的default-character-set=utf-8
来设置。
MySQL字符集系统变量含义如下:
相关解决方案
- mysql 简单化 or能否实现
- 请问registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister
- MySQL 5.5 Command Line Client 窗口1输密码就退出
- 请问上Linux平台上怎么搭建JDK \TOMCAT\MYSQL
- 在LINUX上配置 MySQL 开机自动 启动
- mysql 转 orocle java ssh项目一条 sql 句不通!
- 急求帮忙!mysql 【 Column count doesn't match value count 】,该怎么解决
- jsp中的注册登录系统(mysql)
- 上了个 MySQL 5.5.25 但是安装时出错了
- 求jsp博客源代码mvc+mysql,该如何解决
- java mysql 中文乱码有关问题
- 请教各位,使用PreparedStatement mysql 数据库 不回滚,盼望解答。多谢。 具体如上
- mysql Statement parameter 一 not set
- java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306,该怎么处理
- MyBatis 读取 Mysql Blob类型的SQL如何写呢
- JDBC MYSQL 驱动加载失败 JSP DAO ECLIPSE,该怎么解决
- Only a type can be imported. com.mysql.jdbc.Driver resolves to a package解决方案
- tomcat 中抛异com.mysql.jdbc.exceptions.MySQLTransactionRollbackException,该如何处理
- struts+iBatis+mysql,该如何解决
- mysql 有外键的插入解决方案
- JSP 更新 MySQL 语句时遇到异常了= =
- mysql,该如何处理
- +++++ mysql 插入成功,查询不到记录?
- MyBatis3.1.1 Insert 回到主键 long类型 MYSQL 数据库
- mysql:假若一个表中,有两个属性name和id,删除同名的保留id小的,问这样写有误吗
- java mysql where限制有关问题
- mysql 数据库,如果信息存在调出,如果不存在转到另一个jsp中解决思路
- mysql jdbc的配置解决方案
- java.lang.ClassNotFoundException:com.mysql.jdbc.Driver,该如何解决
- 救助。Mysql 的条件删除语句如何写,就是删除部门的时候,如果部门下有用户,就不能删除