2009-02-27 8 views
4

Wenn ich einen Hash enthält UTF8 Strings serialisiert werden, wie folgt aus:Ruby on Rails: serialize UTF8 Problem

poll.variants = {0 => 'тест',1 => '-тест-',2 => 'test # test "тест'} 

auf ein Active Feld, das resultierende Feld enthält:

--- 
0: !binary | 
    0YLQtdGB0YI= 

1: !binary | 
    LdGC0LXRgdGCLQ== 

2: !binary | 
    dGVzdCAjIHRlc3QgItGC0LXRgdGC 

Die UTF-8-Zeichenketten erhalten aus irgendeinem Grund als binär und base64-codiert behandelt. Die Zusammenstellung auf dem Feld ist utf8_general_ci, und ich bin ein bisschen enttäuscht.

Gibt es eine Möglichkeit, ActiveRecord zu machen: serialisieren Sie lesbare yaml in das Feld?

Antwort

5

Gibt es eine Möglichkeit Active zu machen : serialisiert Menschen lesbare yaml zum Feld?

Nr Seine Base64 codiert, um beliebigen Text zu codieren (in beliebiger Codierung) bis auf den kleinsten gemeinsamen denonimator, die dann sicher ist, über den Draht und/oder Speicher in Datenspeicher zu senden, die nicht akzeptieren UTF-8 Daten.

+0

Oh, das ist vernünftig. Danke für die Erklärung. –

+1

Die Frage ist: Warum deserialisiert Rails die Zeichenfolge aus der DB nicht als UTF-8? Es gibt ASCII-8BIT zurück ... – awendt