Я получаю неверную кодировку от адаптера jeremyevans-postgres-pr, который является одним из те, которые сиквел рекомендует.
Я что-то делаю не так?
Пример кода:
require 'postgres-pr/connection'
c = PostgresPR::Connection.new('blah', 'blah', 'blah')
row = c.query("select name, cost from remedium.prescription").rows.last
row.each do |f|
#f.force_encoding(Encoding::UTF_8) #-- uncomment this to 'fix' everything ;/
enc = f.kind_of?(String) ? f.encoding : ''
puts [f.class, f, f.inspect, enc].join(' ')
end
Вывод:
String Paracelsium "Paracelsium" ASCII-8BIT
String £0.00 "\xC2\xA30.00" ASCII-8BIT
Излишне говорить, что я получаю те же результаты от самого Sequel. И моя база данных закодирована не в ASCII, а в UTF8.
Прямо сейчас мне нужно поговорить с PostgreSQL, используя как Ruby, так и JRuby, и имеет смысл попробовать использовать одну и ту же цепочку инструментов в каждом случае, так что это очевидный адаптер для использования. Но.
исходный адаптер, который разветвил Джереми, ведет себя так же.
Я могу исправить это, принудительно закодировав кодировку по всем направлениям, но это будет очень больно делать во всем моем коде...
Некоторые дополнительные ответы, которые я, вероятно, должен был предоставить (спасибо):
- версии -> Centos 7; Руби 2.3.1 и JRuby 9.1.1.0; гем версия 0.6.6
- Язык ОС -> "LANG=en_GB.UTF-8"
- Настройки Ruby по умолчанию -> Encoding.default_internal = nil; default_external = Кодировка::UTF-8