首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换成mysql的utf-8字符集txt文件在macos上不能正确显示

转换成mysql的utf-8字符集txt文件在macos上不能正确显示
EN

Stack Overflow用户
提问于 2019-02-06 16:14:55
回答 1查看 82关注 0票数 1

我使用'utf-8‘字符集在macos上的mysql命令行中创建了一个表,

代码语言:javascript
运行
复制
mysql>  CREATE TABLE tb_stu (id VARCHAR(20), name VARCHAR(20), sex CHAR(1), birthday DATE) default charset=utf8;
Query OK, 0 rows affected (0.02 sec)

mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| pet            |
| tb_stu         |
+----------------+
2 rows in set (0.00 sec)

mysql> show create table tb_stu \G
*************************** 1. row ***************************
       Table: tb_stu
Create Table: CREATE TABLE `tb_stu` (
  `id` varchar(20) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `sex` char(1) DEFAULT NULL,
  `birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

我想在'tb_stu‘表中添加一些值,我有一个包含中文字符串的txt文件:

代码语言:javascript
运行
复制
1   小明  男   2015-11-02
2   小红  女   2015-09-01
3   张三  男   2010-02-12
4   李四  女   2009-09-10

而且txt文件也是'utf-8‘字符集!

代码语言:javascript
运行
复制
➜  ~ file /Users/lee/Desktop/JAVA/Java从入门到精通/第18章--使用JDBC操作数据库/Example_18_02/tb_stu.txt
/Users/lee/Desktop/JAVA/Java从入门到精通/第18章--使用JDBC操作数据库/Example_18_02/tb_stu.txt: UTF-8 Unicode text

因此,我执行mysql命令行:

代码语言:javascript
运行
复制
mysql> LOAD DATA LOCAL INFILE '/Users/lee/Desktop/JAVA/Java从入门到精通/第18章--使用JDBC操作数据库/Example_18_02/tb_stu.txt' INTO TABLE tb_stu;
Query OK, 4 rows affected, 4 warnings (0.01 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 4

但我得到了mysql中混乱的代码:

代码语言:javascript
运行
复制
mysql> select * from tb_stu;
+------+----------------+------+------------+
| id   | name           | sex  | birthday   |
+------+----------------+------+------------+
| 1    | å°æ˜Ž         | ç    | 2015-11-02 |
| 2    | å°çº¢         | å    | 2015-09-01 |
| 3    | 张三         | ç    | 2010-02-12 |
| 4    | æŽå››         | å    | 2009-09-10 |
+------+----------------+------+------------+
4 rows in set (0.00 sec)

这让我很困惑,mysql中的tabel和txt都是'utf-8‘字符集,为什么我会得到这么乱的代码?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-02-06 17:41:17

您需要进行更多的调查以了解您的问题。例如,其中一个选项是您的数据被正确地写入DB,但在命令行中,由于您的操作系统环境中的某些错误的编码设置,数据显示不正确。或者,问题可能是数据在写入时被篡改(损坏),这意味着它被错误地存储在数据库中。因此,我建议将您的原始文件与正确显示的中文字符转换成unicode序列,然后将DB中的数据转换成unicode序列,并进行比较,看看您的DB数据是否显示不正确或数据本身是否损坏。这将帮助您了解您的问题,然后找到解决问题的方法。以下是可以帮助您的工具:

有一个开源java库MgntUtils (由我编写),它有一个实用程序,可以将字符串转换为unicode序列,反之亦然:

代码语言:javascript
运行
复制
result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);

此代码的输出为:

代码语言:javascript
运行
复制
\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World

该库可以在Maven CentralGithub上找到,它以maven工件的形式提供,并带有源代码和javadoc

下面是类StringUnicodeEncoderDecoder的javadoc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54549142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档