3

如何将 UCS2 中的字符串(每个字符 2 个字节)转换为 Ruby 中的 UTF8 字符串?

4

3 回答 3

4

您应该查看iconv,它是 Ruby 标准库的一部分。它是为这项任务而设计的。

具体来说,

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

应该处理转换。

于 2009-06-23T15:01:39.177 回答
2

因为在大多数情况下,UCS2 编码中的字符串可以表示为 UTF-16 字符串(在 UTF-16 中,编码大于 0x10000 的字符很少使用)我认为使用 Iconv 是转换字符串的更好方法。示例代码:

require 'iconv'

ic = Iconv.new 'UTF-8', 'UTF-16'
utf8string = ic.iconv ucs2string
于 2009-06-23T15:06:12.427 回答
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
于 2012-01-13T15:56:05.747 回答