2016-08-22 3 views
2

私は、ColdFusionを使用してCSVテキストファイルからデータを読み込み、それをテーブルに挿入しています。データベースはUTF8で、テーブルはUTf8です。MysqlとUTF8で箇条書きのUnicode文字を格納する

この文字列•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" 
}; 

はTABLE出力を作成、マイナス加えて、私はここに、インポートファイルの

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

完全なコードを実行した

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

いくつかの列: https://gist.github.com/mborn319/c40573d6a58f88ec6bf373efbbf92f29

ここにCSVファイルがあります。 7行目を参照:http://pastebin.com/fM7fFtXD

+3

文字セット変換がどこかで行われているように見えます。それが保存されているかどうか、またはウェブページに戻ってきているのでしょうか?問題は、データベースに送られる前のエンコーディング、データベース接続のキャラクタセット、またはCSVファイルの読み込みのいずれかである可能性があります。可能な解決策はここにあります:http://stackoverflow.com/questions/22485224/coldfusion-character-encoding-issue – spencer7593

+0

接続文字列を見てみましょう。 utf8を指定する必要があります。 –

+0

そのgithubリンクはutf8をまったく表示しません。 IMPORTを実行するコマンドは何ですか? 'LOAD DATA'の場合、' CHARACTER SET'に関する節がありますか? –

答えて

1

私のCFMLスクリプトでは、@Leighと@Rick Jamesの提案ごとにデータをダンプしようとしました。私は文字がMysqlへの挿入の前に文字化けしているのを見ました。これに基づいて、私はファイルを読むときにcharsetを指定する必要があることを認識しました。

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

結果:•Detroit Diesel series-60 engineこれで、データベースに正しく挿入できます。

+1

情報ありがとうございます。 utf8修正の終わりのないリストのもうひとつのおしゃべり:http://mysql.rjweb.org/doc.php/charcoll#other_computer_languages –

+0

@RickJames - あなたは正しいです。次回は、いつもの "book-o-comments"を書くことにこだわります;-) – Leigh

関連する問題