ruby - 添加反斜杠以修复 ruby​​ 字符串中的字符编码

标签 ruby utf-8 character-encoding web-scraping utf-16

我确信这很容易,但我被所有这些反斜杠打结了。

我有一些数据是从网站上(礼貌地)抓取的。偶尔我会想到这样一句话:

u00a362 000? you must be joking

当然应该是“2000 英镑?”你一定是在开玩笑'。 irb 中的一个简短测试破译了它。

ruby-1.9.2-p180 :001 > string = "u00a3"
  => "u00a3" 
ruby-1.9.2-p180 :002 > string = "\u00a3"
  => "£" 

当然:加个反斜杠就可以解码了。我在 this question 的帮助下创建了以下内容:

puts str.gsub('u00', '\\u00') 

这导致 \u00a3 被输出。这一切都很好,但我希望它在字符串本身中是 £。仅仅 put 是不够的。

gsub('u00a3', '£') 毫无意义,因为我会遗漏其他字符。

感谢您的帮助。

最佳答案

尝试使用 Iconv 库来转换传入的字符串。您还可以查看 stringex gem。它有“走另一条路”的方法,但它可能会提供您正在寻找的映射。也就是说,如果您的编码不正确,就不可能正确处理。

关于ruby - 添加反斜杠以修复 ruby​​ 字符串中的字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6835846/

相关文章:

ruby - Linux 开发 SMTP 服务器

ruby - 导入 CSV 引用错误让我抓狂

python - 使用 Python 从 MySQL 读取西里尔字母 utf-8 符号不正确

ruby-on-rails - Rails 3.1、Ruby 1.9.2-p180 和 UTF-8 问题

c++ - 假设所有 Windows 平台都在 UCS-2 LE 中是否安全

ruby-on-rails - rake routes 命令不起作用 - rake 版本 13.0.3

ruby - 使用 Ruby 作为脚本语言,使用 4gb RAM 的计算机对 30gb 的字符串进行排序的最佳方法是什么?

xml - 无法支持 ColdFusion 生成的 XML 文件中的非 UTF-8 字符

Java - 处理外来字符

unicode - Unicode 可打印字符的范围是多少?