Из CSV # read docs:
Этот метод также понимает дополнительный параметр: encoding, который можно использовать для указания кодировки данных в файле для чтения,Вы должны предоставить это, если ваши данные не находятся в Encoding :: default_external ().CSV будет использовать это, чтобы определить, как анализировать данные.
Поэтому, чтобы быть в безопасности, я бы сначала использовал
COUNTRIES = CSV.read("/Users/dumitru/test.csv", { encoding: "UTF-8" }).flatten
и проверил, что
COUNTRIES[2].encoding.name
говорит а) сразу после CSV#read
и б) при выполнении в вашем шаблоне ERB.Если там написано «US-ASCII», вам следует проверить, случайно ли что-то изменило ваши СТРАНЫ после их анализа.По крайней мере, тогда вы можете быть уверены, что между ними что-то странное.
Я бы также предпочел
<%= "Country:" + COUNTRIES[id] %>
, поскольку у вас там уже есть строки.Но я не думаю, что это вылечит проблему.
Я не мог себе представить, что что-то на самом деле изменило содержимое строки, но, возможно, кодировка стала ассоциироваться как US-ASCII.Таким образом, у вас может быть хороший шанс использовать
COUNTRIES[2].force_encoding("UTF-8")
со своей строкой для принудительного установления связи обратно в UTF-8.Если это не поможет, я попробую
COUNTRIES[2].encode("UTF-8")
. Если все эти методы не сработают, мне потребуется знать кодировку во время попытки рендеринга строки в шаблоне ERB, чтобы помочь вам в дальнейшем..