Как мне преобразовать строку UCS2 в UTF8? - PullRequest
3 голосов
/ 23 июня 2009

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

Ответы [ 3 ]

4 голосов
/ 23 июня 2009

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

В частности,

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

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

2 голосов
/ 23 июня 2009

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

require 'iconv'

ic = Iconv.new 'UTF-8', 'UTF-16'
utf8string = ic.iconv ucs2string
1 голос
/ 13 января 2012

с 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
...