程序写入mycat中文乱码解决(也包括mysql编码修改)
乱码问题可能出现的三个地方
1.程序连接的编码要设置
jdbc:mysql://192.168.1.1:8066/TESTDB?useUnicode=true&characterEncoding=utf8
2. mysql数据库的编码要设置
1) 查看mysql server级别的编码集
首先进入mysql使用命令:
mysql -uroot –p
然后 执行命令查看:
show variables like 'character%'
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | NULL | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
编辑/etc/mysql/my.cf文件
在[client]下添加
default-character-set=utf8
在[mysqld] 下添加
character_set_server=utf8 (如果重启mysql出错调整位置,在[mysqld] 最下面)
我机器上是这样配置的:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
character-set-server=utf8
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
注:[mysqld]处也可使用default-character-set=utf8,如果启动mysql服务出错的话,就使用character_set_server=utf8。
2) 查看数据库级别的编码是不是一致的,使用mysql客户端可以看到
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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
3. mycat的编码
默认的是utf8格式的,明确指定在server.xml下的system标签下添加格式如下:
<property name="charset">utf8</property>
4. 如果业务需要utf8mb4 等复杂字符集配置对应修改:
默认的是utf8格式的,明确指定在server.xml下的system标签下添加格式如下:
<property name="charset">utf8mb4</property>
然后根据数据库端的字符集ID配置mycat的字符集序列:
配置conf/index_to_charset.properties
对应为字符集ID=字符集
比如45=utf8mb4
上述四点配置的编码一致的话乱码就不会出现了。
最新文章
- 【Win10 应用开发】实现数据的增量加载
- mysql常见错误及解决方案
- iOS之单例
- https://my.oschina.net/huangyong/blog/161419
- C数组的相关知识
- Java基础 -- 冒泡排序算法(带详细注释)
- 瑞丽的SQL-SQL Server的表旋转(行列转换)
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍(转)
- 持久化redis
- Linux内存管理 (15)页面迁移
- 唯一约束(UNIQUE_KEY)
- 有关于tomcat启动时,利用listener来执行某个方法
- 一个从MongoDB中导出给定日期范围内数据的shell脚本
- ABOUT ME/OI回忆录
- 项目打成jar包
- [转]Newtonsoft.Json 序列化和反序列化 时间格式
- 在Qt示例项目的C ++ / QML源中的//! [0]的含义是什么?
- windows的cmd命令切换磁盘路径
- JS与JAVA数据类型的区别
- caffe训练自己的数据集