Ба!Я получаю эту ошибку кодирования в рельсах с ruby ​​1.9.2 - PullRequest
2 голосов
/ 24 октября 2011

Я использую rails 3.1.1 с ruby-1.9.2-p290 в системе Debian через rvm.Я использую шведские буквы в своих взглядах и в базе данных mysql.Я продолжаю получать

несовместимые кодировки символов: UTF-8 и ASCII-8BIT

, когда я захожу на страницу, которая получает вещи из базы данных.

в моем database.yml у меня есть это:

staging:
  adapter: mysql
  database:something
  encoding: utf8
  username: something
  password: something
  host: localhost    

production:
  adapter: mysql
  database:something
  encoding: utf8
  username: something
  password: something
  host: localhost

мой config.ru:

Encoding.default_external = "UTF-8"
require ::File.expand_path('../config/environment',  __FILE__)
run Someappname::Application

мой environment.rb:

# Load the rails application
require File.expand_path('../application', __FILE__)
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
Someappname::Application.initialize!

мой конфиг / инициализаторы/encoding.rb:

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

Я пробовал со всеми комбинациями «Encoding.default_xxxxxx = Encoding :: UTF_8» и без них

Каждый контроллер, помощник и почтовик начинается с:

# кодировка: UTF-8

В mysql:

mysql> показывать переменные наподобие 'char%';

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

И вывод:

mysql> показывать переменные типа 'colla%';

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | utf8_general_ci   |
| collation_server     | latin1_swedish_ci |

Есть идеи, что я могу сделать?Я очень устала от этой проблемы!

1 Ответ

4 голосов
/ 24 октября 2011

Окей, похоже, мне удалось решить проблему! Проблема заключалась в том, что я использовал mysql и mysql2 одновременно. Поэтому, чтобы решить эту проблему, мне пришлось удалить mysql и взять mysql2 «0.3.7», иначе устройство создавало странные ошибки. А затем мне пришлось изменить адаптер в database.yml на адаптер: mysql2

Надеюсь, что это помогает кому-то, имеющему ту же проблему!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...