Вопрос по unicode, utf-8, ucs2, ruby – Как мне преобразовать строку UCS2 в UTF8?

3

Как преобразовать строку в UCS2 (2 байта на символ) в строку UTF8 в Ruby?

Ваш Ответ

3   ответа
2

едставлены в виде строки UTF-16 (в кодировке UTF-16 с кодами, превышающими 0x10000, используется редко), я думаю, что использование Iconv - лучший способ преобразования строк. Образец кода:

require 'iconv'

ic = Iconv.new 'UTF-8', 'UTF-16'
utf8string = ic.iconv ucs2string
Теперь я счастливо использую 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
4

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

В частности,

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

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

UCS2 отличается от UTF-16 (en.wikipedia.org/wiki/UTF-16/UCS-2)

Похожие вопросы