2015-11-11 2 views
0

Я пытаюсь развернуть приложение на сервере Ubuntu 14.02 с помощью NGINX и PUMA, и когда я пытаюсь получить доступ статические страницы на сервере с символами в бразильском португальском языке и БЕЗ доступа к базе данных, страница не отображается и регистрируется следующая ошибка:ActionView :: Template :: Error (несовместимые кодировки символов: ASCII-8BIT и UTF-8) с португальскими бразильскими символами

ActionView :: Template :: Error (несовместимые кодировки символов: ASCII-8BIT и UTF-8)

Я прочитал много сообщений/ответов об этой ошибке и пробовал все.

версия Ruby: рубин 2.1.3p242 (2014-09-19 ревизия 47630) [x86_64-Linux] Rails версии: Rails 4.2.4

Команда локаль на сервере вернуть следующее:

LANG=en_US.UTF-8 
LANGUAGE=en_US.UTF-8 
LC_CTYPE="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL=en_US.UTF-8 

Мой application.rb содержит строку:

config.encoding = "utf-8" 

Мой environment.rb contais строки:

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

Я уже поместил # кодировку: "utf-8" поверх моих файлов html.erb без успеха.

ответ

1

Убедитесь, что файлы-нарушители на самом деле используют кодировку UTF-8 (например, Textmate позволяет сохранять файл с использованием различных кодировок). Проверьте, действительно ли файл распознан системой как UTF, запуск file /path/to/something должен вернуть UTF-8.

Кроме того, если у вас есть только несколько из этих плохо закодированных строк, которые вы можете попробовать что-то вроде этого:

the_bad_string.dup.force_encoding("UTF-8") 

Это должно преобразовать все, что было UTF.

+0

Привет, Дмитрий, спасибо, что нашли время, чтобы помочь мне! Файл команды дает мне следующее: divulgue.html.erb: UTF-8 Unicode text Сила_кодирования тоже не помогла мне. И когда я возвращаю код the_bad_string.encoding.name, он также дает мне UTF-8 !!! –

+0

Если ваша строка отправляется откуда-то вне 'divulgue.html.erb', то также проверьте кодировку исходного файла. Например. У меня были такие проблемы, когда я пытался использовать строки, определенные в env.rb, в представлении. Также проверьте, что возвращает 'the_bad_string.encoding', это UTF ?. –

+0

Нет, это статическая страница со статическим содержимым, но с такими символами, как á ç ç. Если я удалю эти символы, страница будет отображаться в порядке. Я использую строки, определенные в файле local_env.rb, чтобы определить заголовок страницы и удивительно, что они работают, даже с символом ú в нем ?? !!! ??? Да, string.encoding.name возвращает UTF-8. –

Смежные вопросы