2009-06-23 5 views

ответ

4

Вы должны изучить iconv, который является частью стандартной библиотеки Ruby. Он предназначен для этой задачи.

В частности,

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

должен обрабатывать преобразование.

+1

UCS2 не совсем то же, что и UTF-16 (http://en.wikipedia.org/wiki/UTF-16/UCS-2) – PJK

2

Поскольку символы в большинстве случаев строки в кодировке UCS2 может быть представлена ​​как UTF-16 строку (в UTF-16 полукокса с кодами большими, чем 0x10000 редко используется) Я думаю, что использование Iconv это лучший способ для преобразования строк. Код Примера:

require 'iconv' 

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

Теперь я с удовольствием использую UCS-2LE вместо UTF-16. –

1

С Ruby 1.9:

string.encode("utf-8") 

Если строка кодировка не известна, возможно, придется установить его первым:

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