2009-06-23 67 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 2013-02-04 21:09:10

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。 – 2013-03-08 18:05: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