在Mysql和UTF8中存储项目符号点unicode字符

时间:2016-08-22 19:10:00

标签: mysql unicode utf-8 coldfusion lucee

我正在使用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

1 个答案:

答案 0 :(得分:1)

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

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

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