JDBC往MySql数据库中写汉字出现乱码的问题
来源:互联网 发布:windows的历史 编辑:程序博客网 时间:2024/06/05 14:48
一 情况描述:
我的情况是这样,首先我的项目的编码格式是UTF-8,客户端请求时的编码也是UTF-8,在项目配置文件的数据库路径也设置了UTF-8格式编码,如下:
spring.datasource.url=jdbc:mysql://192.168.11.139/samp_db?useUnicode=true&AutoReconnect=true&characterEncoding=utf-8&useSSL=false,通过打点调试结果是客户端请求传递过来的数据(当然数据是String类型的汉字)是正常的,把数据插入到MySql数据库中就变成了乱码,根据网上大多说法这是MySql数据库编码的问题,下面就来看看如何修改MySql数据库编码。
二 修改MySql数据库编码步骤
1 查看当前自己数据库系统的编码格式
先进入MySQl环境下:
$ /usr/local/mysql/bin/mysql -u root -p 按Enter键
Enter password: 输入自己数据库的密码 ,按Enter键
成功进入后输入如下命令:
mysql> show variables like '%char%'; 按Enter键 会出现类似下面的结果:
+--------------------------+-----------------------------------------------------------+
| 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 | /usr/local/mysql-5.7.19-macos10.12-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
8 rows in set (0.01 sec)
上面红色部分的编码格式是 latin1 ,我们想要解决上述乱码的问题需要把character_set_database和 character_set_server 的编码格式改为gbk.
2 关闭mysql服务
在系统偏好设置中,可以直接在右上角的搜索框输入mysql就行搜索,找到后直接点击stop mysql server 就好。
3 创建my.cnf文件
另外打开一个终端新窗口,输入如下命令:
$ sudo vi /etc/my.cnf 按Enter 进入编辑界面,
当然如果这个文件已经存在你也可以通过这种方式打开这个文件进行编辑,这种情况下
你只需default-character-set 、character-set-server对应的编码格式改为gbk就可以了。
要是新创建的my.cnf 文件把如下代码复制粘贴过去
[client]
default-character-set=gbk
[mysqld]
character-set-server=gbk
最后 按esc ,输入:wq! 保存退出编辑。
4 参考步骤2重启mysql server
这是时候我们再返回第一次打开的终端窗口,再次输入show variables like '%char%'; 按Enter键 会出现类似下面的结果:
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | gbk|
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server |gbk |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.19-macos10.12-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
8 rows in set (0.01 sec)
可以看出character_set_database和 character_set_server 的编码格式变为了gbk。
然后再往mySql数据库中写数据时,乱码消失了。
有人可能会质疑请求传递过的数据编码格式UTF-8 ,而数据库的编码格式是gbk,反而没有出现乱码,在往数据库中写数据的过程中系统自动完成了这种格式的转换。
参考:
https://www.2cto.com/database/201308/232842.html
阅读全文
0 0
- JDBC往MySql数据库中写汉字出现乱码的问题
- hibernate中向mysql数据库插入汉字出现???乱码问题的纠正
- Mysql中插入汉字出现乱码问题
- mysql数据库的汉字乱码问题
- python向mysql数据库插入汉字出现乱码问题
- 用eclipse写sql语句往mysql中输入汉字出现乱码
- 关于mysql中汉字的乱码问题
- mysql数据库中汉字乱码
- 今天解决的问题:在vc中往Access数据库写中文时出现乱码。
- MySQL插入显示汉字出现乱码问题的解决
- MySQL插入显示汉字出现乱码问题的解决
- jdbc连接mysql数据库出现中文乱码需要注意的问题
- 解决Excel导入mysql数据库时汉字乱码的问题
- Mysql汉字乱码的问题
- 解决JDBC操作数据库出现中文乱码的问题
- strust中JSP页面通过JDBC操作数据库出现乱码,页面出现乱码问题
- MySQL数据库编程汉字乱码问题
- java写jdbc时候数据库乱码问题
- 扁平化管理 hihoCoder[Offer收割]编程练习赛38/hihoCoder1650
- jxl导出数据到excel表格
- CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置
- Codeforces Round #448 (Div. 2) 895B. XK Segments
- tensorflow各版本间的区别错误
- JDBC往MySql数据库中写汉字出现乱码的问题
- Java中的方法重载
- 在OpenCV下利用霍夫变换进行直线检测和圆检测
- Visual Studio 2017 15.5 正式发布,性能再提升
- 【Scikit-Learn 中文文档】预测目标 (y) 的转换
- 使用POI同时对Excel文件进行读和写操作时避免Invalid header signatu
- Lintcode:旋转字符串
- REDIS系列之五大对象原理
- Eclipse隐藏引用的jar包