1

使用 Fixtures 为 sqlite3 数据库播种确实适用于 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(...)

在种子.rb

之后,数据库喊有一个 id 为 1 且名称为“ü”的条目。那是正确的。这适用于 config1。使用 config2 我总是有一个名称为“ü”的条目。utf-8 编码似乎失败了。

我已经在 rails 项目的所有地方都打开了 UTF-8:

encoding: utf-8

在数据库.yml

# encoding: utf-8

在种子.rb

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

在 config/environments/development.rb

4

1 回答 1

0

这两个系统是否有可能具有不同的字节顺序?

从 SQLite3 发行说明:

支持 UTF-8 和 UTF-16

SQLite 3.0 的新 API 包含以主机的本机字节顺序接受文本作为 UTF-8 和 UTF-16 的例程。每个数据库文件都将文本管理为 UTF-8、UTF-16BE(大端)或 UTF-16LE(小端)。

你可以在这里查看: http ://en.wikipedia.org/wiki/Endianness#Endianness_and_operating_systems_on_architectures

于 2012-05-17T21:15:04.697 回答