2009-06-23 9 views

Antwort

4

Sie sollten in iconv suchen, die Teil der Ruby-Standardbibliothek ist. Es ist für diese Aufgabe konzipiert.

Spezifisch

Iconv.iconv("utf-8", "utf-16", str).first 

sollte die Umwandlung handhaben.

+1

UCS2 nicht genau ist die Wie UTF-16 (http://en.wikipedia.org/wiki/UTF-16/UCS-2) – PJK

2

Da Zeichen in den meisten Fällen Zeichenfolge in UCS2-Codierung als UTF-16-Zeichenfolge dargestellt werden (in UTF-16 char mit Codes größer als 0x10000 wird selten verwendet) Ich denke, Verwendung von Iconv ist eine bessere Möglichkeit zum Konvertieren von Zeichenfolgen. Beispielcode:

require 'iconv' 

ic = Iconv.new 'UTF-8', 'UTF-16' 
utf8string = ic.iconv ucs2string 
+0

Ich benutze jetzt glücklich UCS-2LE anstelle von UTF-16. –

1

Mit Ruby 1.9:

string.encode("utf-8") 

Wenn die String-Codierung nicht bekannt ist, müssen Sie kann es setzen zuerst:

string.force_encoding("utf-16be").encode("utf-8") # Big-endian 
string.force_encoding("utf-16le").encode("utf-8") # Little-endian