Java读取Mysql中文乱码

load data infile "sql.txt" table a fields terminate by "," 当sql.txt中有中文,用java或者client端输出出现中文乱码。

一、locale 查看Client语言

>locale
LANG="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_ALL=

二、locale修改mysql服务器编码

>export LC_ALL="zh_CN.UTF-8"
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
....

服务器端不支持中文编码,运行下面的命令安装中文支持。

yum install kde-l10n-Chinese
yum reinstall glibc-common

设置服务器端LC_ALL,此时服务器端和Client端编码相同

>export LC_ALL="zh_CN.UTF-8"
>locale
LANG=
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

三、修改mysql默认编码

查看编码

show variables like '%char%';

设置全局编码为UTF-8,修改my.cnf文件。

[mysqld]
character-set-server=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

配置完成,重启mysql,查看编码。

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

四、创建表

DEFAULT CHARSET=utf8

create table shop_info(
    `shop_id` int(10) PRIMARY KEY,  
    `city_name` varchar(100),
    `location_id` varchar(10),
    `per_pay`int(10),
    `score` int(10),
    `comment_cnt` int(10),
    `shop_level` int(10),
    `cate_1_name` varchar(50),
    `cate_2_name` varchar(50),
    `cate_3_name` varchar(50)
)DEFAULT CHARSET=utf8;

总结

当完成以上全部配置,load data infile 文件装载到数据库,用client端读取,能正确显示中文。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王硕

原 利用pgpool实现PostgreSQL的高可用

44640
来自专栏散尽浮华

[原创]Gerrit中文乱码问题解决方案分享

应开发同事的要求,部署了Gitlab+Gerrit+Jenkins的持续集成环境. 但是发现了一个问题,Gerrit登陆后有中文乱码出现. 具体情况如下: (1...

34850
来自专栏Netkiller

Linux 系统与数据库安全

Linux 系统与数据库安全 目录 1. 帐号安全 1.1. Shell 安全 1.2. .history 文件 2. 临时文件安全 3. 其他安全问题 4. ...

38750
来自专栏乐沙弥的世界

Linux 6.3下安装Oracle Enterprise Cloud Control 12c

    Oracle enterprise cloud control 12c的安装是一个比较复杂的过程,因为他需要依赖于Oracel database以及Or...

13620
来自专栏我的博客

Thinkphp连接Oracle

'DB_TYPE' => 'oracle', // 数据库类型 'DB_HOST' => 'XXXXXXX', //...

40080
来自专栏乐沙弥的世界

基于Innobackupex的增备及恢复

    MySQL的热备(物理备份)可以采取全备加增量备份的方式来减轻数据库I/O压力及系统资源的占用。增量备份主要是以全备或增量备份为基础,备份那些变更过的页...

9720
来自专栏杨建荣的学习笔记

Oracle 12cR2中的ADG会话保留特性

Oracle 12cR2中有一个不错的特性,那就是Active Data Guard会话保留,原本的叫法是Preserving Active Data Guar...

30450
来自专栏杨建荣的学习笔记

数据库突然宕机的问题及分析

昨天晚上,某个环境的数据库在做一个压力测试的时候突然宕机了。这个问题比较急。马上查看日志文件。 看到了如下的一段,报了os级的linux错误。提示没有空间了。 ...

39980
来自专栏乐沙弥的世界

MySQL read_log_event(): 'Found invalid event in binary log'

    MySQL以简单易用著称,在同一个服务器上可以安装N个不同的版本,方便测试,迁移等等。此外,对于大多数Linux系统,集成了mysql,缺省会被安装。因...

9620
来自专栏杨建荣的学习笔记

MySQL迁移文件的小问题(r8笔记第18天)

线上有一台服务器上,里面有一个mysql数据库服务,其实库也很小,就几个G,一直以来是保留了多天的备份集,但是因为业务的关系,这个库其实只有一些 基本的数据查询...

38670

扫码关注云+社区

领取腾讯云代金券