Я использую Ruby 2.0 и Rails 3.2.14. На мой взгляд завален несколько UTF-8 символов, в основном символы валют как บาท и د.إ и т.д. Я заметил, что некоторыеПроблемы с кодированием Rails
(ActionView::Template::Error) "incompatible character encodings: ASCII-8BIT and UTF-8
в нашем производственном коде и быстро пытавшихся посещения URL страницы на моем браузере без каких-либо проблем. При копании я понял, что ошибка была фактически вызвана BingBot и несколькими пауками. Поэтому, когда я попытался свернуть один и тот же URL-адрес, я смог воспроизвести проблему. Итак, если я попробую
curl http://localhost:3000/?x=✓
Я получаю сообщение об ошибке, когда символы UTF-8 используются в коде просмотра. Я также понял, что если использовать символы с кодировкой HTML вместо символов, это не происходит. Однако я предпочитаю использовать фактические символы.
И я уже пытался установить Encoding.default_external = Encoding :: UTF_8 в environment.rb, добавляя #encoding: utf-8 магический комментарий к началу файла, и это не помогает.
Итак, почему возникает эта ошибка? В чем разница между ударом этого URL-адреса в браузере и CURL, кроме файлов cookie? И как мне решить эту проблему и позволить BingBot индексировать наш сайт? Благодарю.
Да, я использую postgres, и моя кодировка базы данных также UTF8. Вы совершенно правы в том, что значения не UTF8 в UTF-8 вызывают это, но в моем случае это не была база данных. – membLoper