我正在使用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
答案 0 :(得分:1)
在我的CFML脚本中,我尝试根据@Leigh和@Rick James的建议转储数据。然后我看到在插入Mysql之前字符出现乱码。基于此,我意识到我需要在读取文件时指定charset
。
<cffile
action="read"
file="#settings.csvfile#"
variable="autodata"
charset="utf-8">
结果:•Detroit Diesel series-60 engine
。现在可以正确插入数据库。