我正在使用ruby脚本(使用续集)将数据从旧数据库传输到新数据库。由于旧数据库的编码问题,我得到了像“München”而不是“München”这样的值。
DB = Sequel.mysql2 'db_name', user: 'name', password: '***', host: '127.0.0.1' # , encoding: Encoding::CP1252.name) # doesn't work
city = DB[:users].first['city'] # => "München"
city.encoding # => #<Encoding:UTF-8>
city.encode(Encoding::UTF_8, Encoding::CP1252) # => "München"
旧的db编码设置为CP1252,新的编码为utf-8。
我试图#gsub
破碎的变音符号,但这不起作用:
umlauts = {
'ä' => 'ä',
'ö' => 'ö',
'ü' => 'ü',
'ß' => 'ß'
}
city.gsub(/[#{umlauts.keys.join}]/, umlauts) # => "Mnchen"
我完全不知道如何正确使用编码,你知道我怎么能得到'München'吗?
答案 0 :(得分:1)
原来我使用#gsub
的方式错了(感谢Mike H-R!),这有效:
umlauts = {
'ä' => 'ä',
'ö' => 'ö',
'ü' => 'ü',
'ß' => 'ß'
}
city.gsub(/#{umlauts.keys.join("|")}/, umlauts)' # => "München"