gpt4 book ai didi

MySQL加载数据到文件UTF8编码

转载 作者:行者123 更新时间:2023-11-29 17:57:17 25 4
gpt4 key购买 nike

我正在尝试将 utf8 编码的文本文件中的数据插入到 utf8 编码的 mysql 数据库中。

我尝试插入的文本文件中的一行如下所示:

<http://dbpedia.org/resource/Canada_(New_France)> <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:History_of_Canada_(1534–1763)> .

要将文件加载到数据库中,我使用以下命令:

LOAD DATA LOCAL INFILE 'path/to/file'
INTO TABLE table_name
CHARACTER SET utf8
FIELDS TERMINATED BY ' '
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(s, @p, o)
COMMIT;

创建表命令如下所示:

 CREATE TABLE `article_categories3` (`s` varchar(511) NOT NULL, `o` varchar(511) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8

不幸的是,数据库中的结果条目如下所示:

| <http://dbpedia.org/resource/Canada_(New_France)>       | <http://dbpedia.org/resource/Category:History_of_Canada_(1534û1763)> |

“-”被“û”取代。其他特殊字符也会发生同样的情况,例如“ï”被“´”替换。

mysql 显示这些字符集:

Server characterset:    utf8
Db characterset: utf8
Client characterset: latin1
Conn. characterset: latin1
character_set_results: latin1

使用命令\C utf8将客户端和连接字符集和character_set_results更改为utf8会导致:

<http://dbpedia.org/resource/Category:History_of_Canada_(1534ÔÇô1763)>
<http://dbpedia.org/resource/Category:Oïl_languages>

将它们更改为 cp850 结果:

<http://dbpedia.org/resource/Category:History_of_Canada_(1534?1763)>
<http://dbpedia.org/resource/Category:Oïl_languages>

因此,通过此设置,“ï”显示正确。

我还尝试编写一个小java程序,它将文件中的行插入数据库,但我用这种方法遇到了相同的结果。

但是如果我手动在 mysql 控制台中输入插入命令,它将被正确插入:

 INSERT INTO table_name VALUES ('<http://dbpedia.org/resource/Canada_(New_France)>', '<http://dbpedia.org/resource/Category:History_of_Canada_(1534–1763)>');

条目的十六进制代码是:

3C687474703A2F2F646270656469612E6F72672F7265736F757263652F43617465676F72793A486973746F72795F6F665F43616E6164615F2831353334E2809331373633293E

(此处结束E28093)

3C687474703A2F2F646270656469612E6F72672F7265736F757263652F43617465676F72793A4FC3AF6C5F6C616E6775616765733E

我检查了文本文件的编码,如下所示:

file -i test.ttl
test.ttl: text/plain; charset=utf-8

您知道吗,我还可以尝试使用正确的编码将文件加载到数据库中吗?

最佳答案

您似乎在数据流中的某个位置具有字符集 cp850

请提供

  • 显示创建表
  • 连接MySQL时的连接参数。

还要验证传入的数据是否实际编码为 UTF-8

获取该列的HEX()——û是十六进制C3BB; endash 和 emdash 是 utf8 格式的 E28093E28094。还有其他事情正在发生。

更多

所有这三个都需要设置相同:character_set_clientcharacter_set_connectioncharacter_set_results

关于MySQL加载数据到文件UTF8编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48687022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com