【发布时间】:2011-12-11 05:31:46
【问题描述】:
我有一些 Ruby 脚本,它读取一些 CSV 文件,处理它们,然后写出一组(新的)CSV 文件。我正在使用 Ruby 1.9.2 和新的标准“csv”gem(以前是 FasterCSV)。源 CSV 文件包含非 ascii 字符(é 等),但它们来自 Excel,因此编码未正确标注。具体来说,当我将文件加载到 ruby 中时,我得到了这个:
require 'csv'
t = CSV.table('file.csv',:converters=>nil)
t.to_s.encoding
# encoding is ASCII-8BIT
即使实际的字符串是 UTF-8。我的问题是我似乎无法得到这个字符串,它被标记为 ASCII 以实际转换为 UTF-8。当我尝试这个时:
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 编码?
【问题讨论】:
-
请看这个讨论:stackoverflow.com/questions/7047944/…希望对你有帮助。
-
@WarHog 谢谢,这正是我想要的。