【发布时间】:2016-04-25 11:01:55
【问题描述】:
我有一个 csv 文件,其中包含一些行,我想使用LOAD DATA INFILE MySQL 命令将这些行插入到 MySQL 表中。当我使用命令,并且插入准备好时,插入的特殊字符都乱了。该文件正确地存储了字符(我认为是这样,因为当我用像 EditPlus 这样的编辑器打开文件时,特殊字符都被破坏了,但是当用另一个编辑器(比如 EmEditor)打开时,特殊字符会正确显示),这些列将保存带有特殊字符的文本,它们是排序规则utf8_general_ci,它们是varchar 列或text 列。该表是一个InnoDB 表,排序规则设置为utf8_general_ci。我使用以下参数从 MariaDB 命令行运行 LOAD DATA INFILE 命令:
LOAD DATA INFILE '/path/to/csv/file' INTO TABLE tablename FIELDS TERMINATED BY '|' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
编辑:我也尝试使用SET NAMES "utf8"; 命令,在使用LOAD DATA INFILE 之前,没有成功:|
【问题讨论】:
-
对于中文,您可能需要
utf8mb4而不是utf8。某些表情符号和中文字符仅适用于 utf8mb4。 (西里尔文在这两种情况下都可以正常工作。) -
现在deceze的解决办法好像连汉字都可以了。
-
大部分汉字都与
utf8一起使用。只有 4 字节编码失败。