【问题标题】:Fixtures: How to load utf-8 characters and convert to non utf-8 and save into database?夹具:如何加载 utf-8 字符并转换为非 utf-8 并保存到数据库中?
【发布时间】:2016-07-29 06:36:24
【问题描述】:

我是 Rails 新手。

我正在研究一个依赖 Fixtures 将非 UTF8 字符从 yml 文件加载到数据库的遗留代码。

rails最新版本,yml必须是utf-8编码,也就是说Fixtures读入的都是utf-8编码。

如何将下面的代码转换成utf-8到non-utf8并加载到数据库(当然是non-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,我尝试在 database.yml 中将“编码”更改为我的数据库编码,但似乎没有自动完成从 utf-8 到我的编码的转换(因为字符串长度不同utf-8这两种编码字节多,数据库返回user_name is too long错误)。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 encoding utf-8


    【解决方案1】:

    我解决了这个问题

    1. 在 boot.rb 中添加以下行

    ENV['NLS_LANG'] ||= 'AMERICAN_AMERICA.JA16SJIS'

    1. 将所有 yml 文件转换为 utf-8 格式(请注意,使用 sjis 格式的 yml 和 ruby​​ gem syck 会加载 yml,但即使加载了 yml,fixture 也不会工作)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      相关资源
      最近更新 更多