固定装置:如何加载 utf-8 字符并转换为非 utf-8 并保存到数据库中?
Fixtures: How to load utf-8 characters and convert to non utf-8 and save into database?
我是 Rails 的新手。
我正在处理遗留代码,该代码依赖于 Fixtures 将非 UTF8 字符从 yml 文件加载到数据库中。
rails最新版本,yml必须是utf-8编码,也就是说Fixtures读入的是utf-8编码。
如何转换以下代码,使其从 utf-8 转换为非 utf8 并加载到数据库中(当然是非 utf8 编码)。
class LoadUsersData < ActiveRecord::Migration
def self.up
down
directory = File.join(File.dirname(__FILE__))
Fixtures.create_fixtures(directory, "users")
end
def self.down
User.delete_all
end
end
其中 users.yml 包含 utf-8 格式的数据(必须)。
或者是否可以使用 .txt(可以是非 utf8 格式)并加载 Fixtures?
我正在使用 oracle_enhanced,我试图将 "encoding" 更改为我在 database.yml 中的数据库编码,但似乎没有自动完成从 utf-8 到我的编码(因为这两种编码的字符串长度不同,utf-8有更多字节,数据库returns user_name太长错误)。
我通过
解决了这个问题
- 在boot.rb
中添加以下行
ENV['NLS_LANG'] ||= 'AMERICAN_AMERICA.JA16SJIS'
- 将所有 yml 文件转换为 utf-8 格式(请注意,使用 sjis 格式的 yml 和 ruby gem syck 将加载 yml,但即使加载了 yml,fixtures 也不会工作。
我是 Rails 的新手。
我正在处理遗留代码,该代码依赖于 Fixtures 将非 UTF8 字符从 yml 文件加载到数据库中。
rails最新版本,yml必须是utf-8编码,也就是说Fixtures读入的是utf-8编码。
如何转换以下代码,使其从 utf-8 转换为非 utf8 并加载到数据库中(当然是非 utf8 编码)。
class LoadUsersData < ActiveRecord::Migration
def self.up
down
directory = File.join(File.dirname(__FILE__))
Fixtures.create_fixtures(directory, "users")
end
def self.down
User.delete_all
end
end
其中 users.yml 包含 utf-8 格式的数据(必须)。
或者是否可以使用 .txt(可以是非 utf8 格式)并加载 Fixtures?
我正在使用 oracle_enhanced,我试图将 "encoding" 更改为我在 database.yml 中的数据库编码,但似乎没有自动完成从 utf-8 到我的编码(因为这两种编码的字符串长度不同,utf-8有更多字节,数据库returns user_name太长错误)。
我通过
解决了这个问题- 在boot.rb 中添加以下行
ENV['NLS_LANG'] ||= 'AMERICAN_AMERICA.JA16SJIS'
- 将所有 yml 文件转换为 utf-8 格式(请注意,使用 sjis 格式的 yml 和 ruby gem syck 将加载 yml,但即使加载了 yml,fixtures 也不会工作。