Ruby 1.8中将字符串简单转换为UTF-8

9

我知道在 Ruby 1.9 中,您可以轻松重新编码字符串,如下所示。

s = s.encode('UTF-8')

Ruby 1.8中的等效方法是什么?需要哪些require语句。

我看过的所有教程都太复杂了,我不明白到底在说什么。


1
抱歉,那是疲劳说话 - 已更正。 - Alex
1个回答

10

James Edward Gray II在Ruby 1.8中处理编码和字符集问题方面有一系列详细的文章集。其中标题为使用iconv进行编码转换的文章包含了详细信息。

总结:使用iconv gem来做所有的编码转换工作。确保已经安装:

gem install iconv

现在,你需要知道你的字符串目前使用的是哪种编码,因为Ruby 1.8将字符串视为一个字节数组(没有内在的编码)。比如说,假设你的字符串使用的是Latin1编码,而你想要将它转换成utf-8编码。

require 'iconv'

string_in_utf8_encoding = Iconv.conv("UTF8", "LATIN1", string_in_latin1_encoding)

参数的顺序为:

  1. 目标编码
  2. 源编码
  3. 要转换的字符串

如果我不确定初始字符串的编码,我该怎么办?有没有检测它的方法? - Alex
一般来说吗?不行。如果输入编码的可能性受到限制,你或许可以使用某种启发式方法,但它并不完全准确或可靠(随着可能编码数量的增加,变得越来越不可靠)。 - rjk
谢谢。我猜因为它是从 SQL 字段输入的,所以我可以假设它是这种类型的字符编码。 - Alex
如果你控制数据库(或者至少知道谁控制它),那是一个很好的假设。如果你觉得这个答案有帮助,请将其标记为被接受的答案。谢谢。 - rjk
+1 看起来指向 grayproductions 博客的链接已经失效了。我找不到一个好的替代品... - kostja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接