2

我正在使用 Coldfusion 从 CSV 文本文件中读取数据并将其插入表中。数据库是UTF8,表是UTF8。

该字符串•Detroit Diesel series-60 engine一直存储在描述字段中

•Detroit Diesel series-60 engine. (这是我从数据库中得到的,没有显示在浏览器中。)

我可以从命令行手动将字符串插入到新记录中,并且正确保留了字符。UTF8 必须支持项目符号字符。我做错了什么?

数据源连接字符串:

this.datasources["blabla"] = {
      class: 'org.gjt.mm.mysql.Driver'
    , connectionString: 'jdbc:mysql://localhost:3306/blabla?useUnicode=true&characterEncoding=UTF-8&jdbcCompliantTruncation=true&allowMultiQueries=false&useLegacyDatetimeCode=true'
    , username: 'nottellingyou'
    , password: "encrypted:zzzzzzz"
};

CREATE TABLE 输出,减去几列

CREATE TABLE `autos` (
  `VIN` varchar(30) NOT NULL,
  `Description` text,
  ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8

另外,我跑了

ALTER TABLE blabla.autos
MODIFY description TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

此处导入文件的完整代码:https ://gist.github.com/mborn319/c40573d6a58f88ec6bf373efbbf92f29

CSV 文件在这里。见第 7 行:http: //pastebin.com/fM7fFtXD

4

1 回答 1

1

在我的 CFML 脚本中,我尝试根据@Leigh 和@Rick James 的建议转储数据。然后我看到这些字符在插入 Mysql 之前是乱码的。基于此,我意识到我需要charset在读取文件时指定。

<cffile
    action="read"
    file="#settings.csvfile#"
    variable="autodata"
    charset="utf-8">

结果:•Detroit Diesel series-60 engine。这现在可以正确插入到数据库中。

于 2016-08-23T15:27:38.177 回答