0

クライアントにcsvファイルをサーバーにアップロードさせるアプリケーションがあります。次に、csv のデータを処理してデータベースに入れます。特に JSON を扱っている場合、文字セットでいくつかの問題が発生しています。特に、変換されていない UTF-8 文字が JSON 応答で IE を壊しています。

処理を開始する前に、アップロードされた csv ファイルを UTF-8 に変換する方法はありますか? アップロードされたファイルの文字エンコーディングを判別する方法はありますか? 私は iconv で少し遊んでみましたが、アップロードされたファイルがどのエンコーディングになるかは常にわかりません。ありがとう。

4

1 に答える 1

2

このソリューションは理想的ではないかもしれませんが、うまくいくはずです。

まず、成分:

  • シャルデ ( sudo gem install chardet)
  • fastcsv ( sudo gem install fastercsv)

実際のコード(テストされていません):

require 'rubygems'
require 'UniversalDetector'
require 'fastercsv'
require 'iconv'

file_to_import = File.open("path/to/your.csv")
# determine the encoding based on the first 100 characters
chardet = UniversalDetector::chardet(file_to_import.read[0..100])
if chardet['confidence'] > 0.7
  charset = chardet['encoding']
else 
  raise 'You better check this file manually.'
end
file_to_import.each_line do |l| 
  converted_line = Iconv.conv('utf-8', charset, l)
  row = FasterCSV.parse(converted_line)[0]
  # do the business here
end
于 2009-11-30T22:20:33.763 に答える