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 に答える