一、编码基础
1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立;
2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码;
3.getBytes() 是通过平台默认字符集进行编码;
项目开发中应遵循的标准是,数据库,表,字段和页面或文本的编码要统一。
二、应用
Mysql可以通过命令来查询当前数据库的编码方式
mysql> status
--------------
mysql Ver 14.14 Distrib 5.5.13, for Win64 (x86)
Connection id: 2
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.5.13 MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 1 hour 43 min 11 sec
Threads: 1 Questions: 9 Slow queries: 0 Opens: 33 Flush tables: 1 Open tabl
es: 0 Queries per second avg: 0.1
--------------
我们也可以通过修改my.ini文件来修改编码方式,但是要重启Mysql服务才可生效
default-character-set=utf8
若修改后,程序存入数据库是还出现乱码可以执行以下步骤:
1、连接数据库设置编码
jdbc:mysql://localhost:3306/test?characterEncoding=utf8
java中的常用编码UTF-8;GBK;GB2312;ISO-8859-1;
对应mysql数据库中的编码utf8;gbk;gb2312;latin1
---------------------------
2、数据库连接串中指定字符集URL=jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=gbk
这时候问题基本可以解决