Как преобразовать строку в UCS2 (2 байта на символ) в строку UTF8 в Ruby?Как преобразовать строку UCS2 в UTF8?
3
A
ответ
4
Вы должны изучить iconv, который является частью стандартной библиотеки Ruby. Он предназначен для этой задачи.
В частности,
Iconv.iconv("utf-8", "utf-16", str).first
должен обрабатывать преобразование.
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
UCS2 не совсем то же, что и UTF-16 (http://en.wikipedia.org/wiki/UTF-16/UCS-2) – PJK