Mysql 导入日文数据乱码问题

做数据迁移后,通过ui发现有日文数据是乱码,通过ui直接修改日文则显示正常.

查了下资料,mysql字符集的作用如下:

MySQL字符集设置

• 系统变量:
character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集
– 还有以collation_开头的同上面对应的变量,用来描述字符序。

于是:

mysql> SHOW VARIABLES LIKE ‘collation_%‘;

+----------------------+-----------------+

| Variable_name        | Value           |

+----------------------+-----------------+

| collation_connection | utf8_general_ci |

| collation_database   | utf8_general_ci |

| collation_server     | latin1_swedish_ci|

+----------------------+-----------------+

3 rows in set (0.00 sec)

而通过jdbc 的配置制定了连接字符集,所以通过ui设定日文无问题:

jdbc\:mysql\://10.1.0.198\:3306/mytestui?zeroDateTimeBehavior\=convertToNull&useUnicode\=true&characterEncoding\=utf-8

而导入数据时,由于没有明确指定连接字符集,mysql会使用默认的字符集进行导入操作,而默认字符集是 latin1_swedish_ci

mysql -h127.0.0.1 -umyaccount -p <./patch.sql

解决方案1:

修改系统的默认字符集为utf-8

解决方案2:

导入sql文件时,指定字符集:

mysql -h127.0.0. -umyaccount -p <.patch.sql --default-character-set=utf8

Mysql explain:

Use charset_name as the default character set for the client and connection.
A common issue that can occur when the operating system uses utf8 or another
multi-byte character
set
is that output from the mysql client is formatted incorrectly, due to
the fact that the MySQL client uses the latin1 character set by default. You
can usually fix such issues by using this option to force the client to use the
system character set instead

 

时间: 2024-10-13 18:56:05

Mysql 导入日文数据乱码问题的相关文章

解决mysql导入导出数据乱码问题

最近在linux上面用mysqldump导出数据,放在windows系统中导入就会出现中文乱码,然后就会导致出现: Unknown MySQL server host和Can't connect to the server的错误.解决mysql导入导出数据乱码问题就是统一导入导出的编码,linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--def

MYSQL导入中文数据乱码的四种解决办法

方法一:通过增加参数 --default-character-set = utf8 解决乱码问题 方法一:通过增加参数 --default-character-set = utf8 解决乱码问题 mysql -u root -p password < path_to_import_file --default-character-set = utf8 方法二:在命令行导入乱码解决 use database_name; set names utf8; (或其他需要的编码) source examp

mysql导入导出数据中文乱码解决方法小结

inux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 复制代码 代码如下: mysqldump -uroot -p --default-character-set=utf8 dbname tablename > bak.sql 那么导入数据的时候也要使用--

[转]mysql导入导出数据中文乱码解决方法小结

本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 代码如下: mys

解决mysql控制台查询数据乱码的问题,有图有真相

在mysql  控制台当 当为gbk的时候查询的数据是汉字,假设不是则为乱码.  set  names  gbk;  那么查询出来的数据则为汉字 解决mysql控制台查询数据乱码的问题,有图有真相,布布扣,bubuko.com

MySQL导入txt数据及导出整个数据库或者数据库某个表的方法

MySQL导入txt数据 例: create schema foursquare_nyc; use foursquare_nyc; create table checkins(    userid int not null auto_increment,    originid varchar(30),    locationid varchar(40),    x double,    y double,    primary key(userid) ); load data local in

mysql导入文件数据时错误: ERROR 29 (HY000): File &#39;xxx.txt&#39; not found (Errcode: 13)

突然遇到mysql错误:ERROR 29 (HY000): File '/var/www/xiaoyou/static/upload/import/20130427105733.csv.txt' not found (Errcode: 13) 感觉特奇怪,因为程序在本地很ok,生气了语句如下: LOAD DATA INFILE '/var/www/upload/abc.csv.txt' INTO TABLE alumni_import FIELDS TERMINATED BY ',' OPTIO

mysql导入大批量数据时,出现ERROR : (2006, &#39;MySQL server has gone away&#39;)

mysql导入数据时,出现ERROR : (2006, 'MySQL server has gone away') 解决方案:官方解释是适当增大 max_allowed_packet 参数可以使client端到server端传递大数据时,系统能够分配更多的扩展内存来处理. 设置 max_allowed_packet = 256M (1024*1024*256) set global max_allowed_packet=268435456; 使用set global命令修改 max_allowe

MySQL插入中文数据乱码问题

一.MySQL插入中文不乱码5中方法小结 方法一:登录mysql,先做“set names latin1;”,然后再执行更新语句或执行语句文件. 方法二:在aql文件中指定set names latin1; 然后登录mysql,通过如下命令执行. 方法三:在sql文件中指定set names latin1; 然后通过mysql命令导入数据 方法四:通过指定mysql命令的字符集参数实现--default-character-set=latin1 方法五:在配置文件里设置客户端及服务端相关参数 不