1

これについてはすでに多くのスレッドがあることは知っていますが、提案された解決策はどれも何らかの理由でうまくいかないようです...

私は使っている:

ルビー1.9.2

レール 2.3.8

ユーザーは MS Excel で CSV ファイルを作成し、これらのファイルを Web アプリケーションにアップロードする必要があります。私の Web アプリケーションとデータベース バックエンドは UTF-8 を使用しており、£ 記号などのすべての特殊文字がアップロード時に破損します。

私はこのようにファイルを読んでいます:

@file = params[:import_file][:uploaded_data]

次に、次を使用してファイルのエンコードを取得します。

 source_encoding = "UTF-8"
 if @file.external_encoding
   source_encoding = @file.external_encoding.name
 end

テスト ファイルのソース エンコーディング値は ASCII-8BIT です。

それから私はやろうとします:

@file.each {|line|
   print "#{line.force_encoding(source_encoding).encode!("UTF-8") }\n"
}

すべてのテキストが正常に表示されているかどうかを確認するため。ただし、これにより次のようなエラーが発生します。

"\xA3" ASCII-8BIT から UTF-8 へ

CSV を読み取ろうとしている場合:

dataArray = CSV.read(@file, encoding: source_encoding)

今回はエラーはありませんが、すべての特殊文字は ? 文字。

私が間違っているかもしれない、またはMS Excelで作成されたCSVファイルをインポートすることは不可能なミッションですか?

よろしく、

オリ

4

0 に答える 0