Wie konvertiert man eine Zeichenfolge in UCS2 (2 Bytes pro Zeichen) in eine UTF8-Zeichenfolge in Ruby?Wie konvertiere ich eine UCS2-Zeichenfolge in UTF8?
Antwort
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.
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
Ich benutze jetzt glücklich UCS-2LE anstelle von UTF-16. –
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
UCS2 nicht genau ist die Wie UTF-16 (http://en.wikipedia.org/wiki/UTF-16/UCS-2) – PJK