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