Ruby on Rails - Исправления заполняют базу данных sqlite3 с неправильной кодировкой utf-8 - PullRequest
1 голос
/ 27 июля 2011

Заполнение базы данных sqlite3 с помощью Fixtures работало с config1, но с поддержкой config2 utf-8 не удалось.

config1: Ubuntu 11.04, ruby ​​1.9.2p136, Rails 3.0.3, среда разработки

config2: OS X Lion, ruby ​​1.9.2p290, Rails 3.0.3, среда разработки

При наличии файла yml, например

001: 
  id: 1
  name: "\xC3\xBC"

, я использую его для заполнениябаза данных с

Fixtures.create_fixtures(...)

в seed.rb

После этого у крика базы данных есть запись с идентификатором 1 и именем "ü".Это было бы правильно.Это работало с config1.С config2 у меня всегда есть запись с именем "¼¼".Кажется, что кодировка utf-8 не работает.

Я уже включил UTF-8 везде в проекте rails:

encoding: utf-8

в database.yml

# encoding: utf-8

inseed.rb

Encoding.default_external = "UTF-8"
Encoding.default_internal = "UTF-8"
config.encoding = "utf-8"

в config / environment / development.rb

1 Ответ

0 голосов
/ 18 мая 2012

Возможно ли, что эти две системы имеют разные порядковые номера?

Из примечаний к выпуску SQLite3:

Поддержка UTF-8 и UTF-16

Новый API для SQLite 3.0 содержит подпрограммы, которые принимают текст как UTF-8 и UTF-16 в собственном порядке байтов хоста.Каждый файл базы данных управляет текстом как UTF-8, UTF-16BE (с прямым порядком байтов) или UTF-16LE (с прямым порядком байтов).

Вы можете проверить здесь: http://en.wikipedia.org/wiki/Endianness#Endianness_and_operating_systems_on_architectures

...