いくつかのCSVファイルを読み込んで処理し、(新しい)CSVファイルを書き出すRubyスクリプトがあります。私はRuby 1.9.2と新しい標準の 'csv' gem(以前はFasterCSVだった)を使用しています。ソースCSVファイルにはASCII以外の文字(éなど)が含まれていますが、エンコーディングが正しく表記されないようにExcelから出力されています。特に、ファイルをルビにロードすると、次のようになります。Excel CSVでRuby 1.9をエンコードする
require 'csv'
t = CSV.table('file.csv',:converters=>nil)
t.to_s.encoding
# encoding is ASCII-8BIT
実際の文字列はUTF-8ですが、私の問題は、実際にUTF-8に変換するためにASCIIであるとマークされているこの文字列を取得できないようです。私はこれを試してみる:
require 'csv'
t = CSV.table('file.csv',:converters=>nil)
f = File.new('output.csv','w:utf-8')
f.write(t.to_s.force_encoding('utf-8'))
f.close
出力ファイルは、まだASCIIでエンコードされているとしてリストされています。出力ファイルをUTF-8でエンコードするにはどうすればよいですか?あなたは、彼らが実際にMacRomanのエンコーディングになるだろう出力にファイルをMacのExcelを使用している場合
この議論を見てください:http://stackoverflow.com/questions/7047944/ruby-read-csv-file-as-utf-8-and-or-convert-ascii-8bit -encoding-to-utf-8 これはあなたを助けてくれるでしょう。 – WarHog
@WarHogありがとう、これは私が探していたものです。 –