2009-06-23 91 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