十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
下文内容主要给大家带来java写入MySQL数据库出现乱码怎么处理,所讲到的知识,与书籍略有不同,都是创新互联专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。
成都创新互联是一家专业提供官渡企业网站建设,专注与成都做网站、网站制作、HTML5建站、小程序制作等业务。10年已为官渡众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
确保数据库数据表创建的编码一致:
创建数据库的时候:
CREATE DATABASE `Db`
CHARACTER SET 'utf8 '
COLLATE 'utf8_general_ci';
注:CHARACTER SET 'utf8 ':这是设置字符编码;
COLLATE 'utf8_general_ci':设置字符排序编码
可以通过命令行设置:alter table tableA character set utf8
建表的时候:
CREATE TABLE `TableA` ( `ID` varchar(40) NOT NULL default ' ',
`UserID` varchar(40) NOT NULL default ' ', ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注:设置表的字符编码 DEFAULT CHARSET=utf8
可以通过命令行设置:alter table tableA charset utf
设置URL的时候:
jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8
注:这里useUnicode=true&characterEncoding=UTF-8这里可以不用添加,默认useUnicode为true
characterEncoding会自动检测当前用的数据库变而进行改变
2.上面的这些设置了可能会用错误,这需要修改mysql中my.ini配置文件
设置MySQL的默认字符集为utf8,找到客户端配置[client]在下面添加。
default-character-set=utf8
找到云服务器配置[mysqld]在下面添加
default-character-set=utf8
设定MySQL数据库以utf8编码运行,连接MySQL数据库时使用utf8编码
停止和重新启动MySQL
net stop mysql
net start mysql
注:找到服务器配置[mysqld]在下面添加:default-character-set=utf8这里加入会导致数据库无法启动
单独加入default-character-set=utf8即可
重新连接数据库,查看编码,数据表内容
mysql> show variables like 'character%';
--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | d:\wamp\bin\mysql\mysql5.5.20\share\charsets\
从上面可以看到,除了| character_set_database | latin1 和character_set_server | latin1 两项为latin1编码其他都为utf8编码,这里导致client和server的编码不一致了,插入数据依然中文会乱码
解决方法:
[mysqld]在下面添加:character_set_server=utf8,然后从新启动
[mysqld]
port=3306
character_set_server=utf8
#default-character-set=utf8
使用如下命令
mysql> show variables like 'character%';
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | d:\wamp\bin\mysql\mysql5.5.20\share\charsets\ |
+--------------------------+-----------------------------------------------
这里可以看到所有的编码都一致了,就不会乱码了
|
| f512ebc1-e587-4baf-bd17-42e27236621f | ??? | female | 2017-02-24 | 119 | jzz@itheima.com | ??,??,?java | VIP | ?? |
之前出入的中文乱。下面为修改之后的结果
| ff1355cb-b25c-4431-8f96-7f56875b582f | 刘备 | female | 2017-02-24 | 119 | jzz@itheima.com | 吃饭,睡觉,学java | VIP | 美女 |
在命令提示中默认为gbk编码,要想不乱码显示,在使用查询语句时使用set names gbk
对于以上关于java写入mysql数据库出现乱码怎么处理,如果大家还有更多需要了解的可以持续关注我们创新互联的行业推新,如需获取专业解答,可在官网联系售前售后的,希望该文章可给大家带来一定的知识更新。