1

Ich bin neu bei Rails.Fixtures: Wie kann man utf-8 Zeichen laden und in non utf-8 konvertieren und in die Datenbank speichern?

Ich arbeite an einem Legacy-Code, der Fixtures verwendet, um nicht UTF8-Zeichen aus Yml-Dateien in die Datenbank zu laden.

Mit der neuesten Version der Schiene muss das Yml UTF-8-Kodierung sein, was bedeutet, dass Fixtures, die eingelesen werden, UTF-8-kodiert werden.

Wie konvertiert man die folgenden Codes, so dass es von utf-8 zu non-utf8 konvertieren und in die Datenbank laden wird (natürlich nicht-utf8-Codierung).

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 

wo users.yml Daten im utf-8-Format enthält (müssen).

Oder ist es möglich, .txt (kann im Nicht-UTF8-Format sein) und laden mit Fixtures?

Ich verwende oracle_enhanced, und ich habe versucht, "Codierung" zu meiner Datenbank-Codierung in database.yml zu ändern, aber es scheint, dass die Konvertierung nicht automatisch von utf-8 zu meiner Codierung erfolgt (weil die String-Länge unterschiedlich ist für diese beiden Codierungen mit UTF-8 hat mehr Bytes, und die Datenbank gibt zurück, dass user_name ist zu lang Fehler).

Antwort

0

Ich löste dies durch

  1. die folgende Zeile in boot.rb

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

  1. konvertieren Sie alle Yml-Dateien in UTF-8-Format (Beachten Sie, dass verwendet SJIS formatiert YML und Ruby Gem Syck wird das Yml laden, aber Fixtures funktionieren nicht, auch wenn Yml geladen ist).