У меня есть gem , который использовал группу людей, использующих группу различных интерпретаторов Ruby, и включает в себя то, что сводится к этому коду:
res = RestClient.post(...)
doc = REXML::Document.new(res).root
Содержаниеres
- это всегда UTF-8, и это прекрасно работает в Ruby 1.8, но взрывается в Ruby 1.9, если ответ не является чистым ASCII и кодировка пользователя по умолчанию не UTF-8.
Теперь, если бы я хотел сделать эту работу только на Ruby 1.9, я бы просто вставил туда res.force_encoding('utf-8')
и покончил бы с этим, но этот метод только для 1.9, а затем перестал работать под Ruby 1.8:
NoMethodError: undefined method `force_encoding' for #<String:0x101318178>
Лучшее решение, которое может быть предложено, это то, что заставляет кодировку по умолчанию для всей системы использовать UTF-8:
Encoding.default_external = 'UTF-8' if defined? Encoding
Лучшие идеи, или это так хорошо, как это получается?Будет ли какое-либо негативное влияние на пользователей библиотеки, которые пытаются использовать разные кодировки?