0
我正在为Geonames写一个导入例程。其中一列是我所假设的完整的UTF-8字符(中文,英文等)。如何让这些字符可以使用Ruby保存在Postgresql中?
无论如何,它在几个字符上崩溃。主要有:”
(请不要混淆"
)。
这里是我的代码:
class City < ActiveRecord::Base
set_table_name "geo_cities"
end
class Cities
class << self
def parse(file)
File.new(file).each_line do |line|
s = line.chomp.split("\t")
city = City.new
# remove ” and "
alternatenames = s[3].gsub(/\"/, "")
alternatenames = alternatenames.gsub("”", "")
alternatenames = '{' + alternatenames.split(/,/).map {|n| '"' + n + '"'}.join(",") + '}'
city.geonameid = s[0]
city.name = s[1]
city.asciiname = s[2]
city.alternatenames = alternatenames
city.latitude = s[4]
city.longitude = s[5]
city.featureclass = s[6]
city.featurecode = s[7]
city.countrycode = s[8]
# city.cc2 = "{#{s[9]}}"
city.admin1code = s[10]
city.admin2code = s[11]
city.admin3code = s[12]
city.admin4code = s[13]
city.population = s[14]
city.elevation = s[15]
city.dem = s[16]
city.timezone = s[17]
city.modificationdate = Time.parse(s[18])
yield city
end
end
end
end
我真的不排队我用GSUB,试图阻止进口破裂的方式。大多数似乎工作正常,但报价(和封闭报价)崩溃。
以下是错误:
invalid multibyte char (US-ASCII) (SyntaxError)
/Users/cbmeeks/Dropbox/Projects/flockgeo/geonames/imports/models.rb:38: invalid multibyte char (US-ASCII)
/Users/cbmeeks/Dropbox/Projects/flockgeo/geonames/imports/models.rb:38: syntax error, unexpected $end, expecting ')'
alternatenames = alternatenames.gsub("”", "")
^
这是进入一个PostgreSQL数据库,顺便说一句。
任何关于如何清理的指针?
感谢
可能重复[红宝石1.9 - 无效的多字节字符(US-ASCII)(http://stackoverflow.com/questions/3678172/ruby-1- 9-invalid-multibyte-char-us-ascii) – 2012-03-21 03:32:37
是的,关于这个问题的答案解决了这个问题。 – cbmeeks 2012-03-22 01:37:56