【问题标题】:How to convert \\u0026 to & with ruby如何将 \\u0026 转换为 & 与 ruby
【发布时间】:2014-08-17 01:22:03
【问题描述】:

我有一个非常基本的问题,我有以下字符串:

url="http://www.autokaupat.net/Jyv%E4skyl%E4/\\u0026view=2254630"

HTML 编码不是问题,但 \\u0026 必须转换为 & 才能按我的意愿工作。以下方法对我不起作用,尽管它似乎适用于许多其他人:

url.force_encoding('UTF-8')

这仅在我删除前导反斜杠之一时才有效。

有什么想法可以解决这个问题吗?

【问题讨论】:

  • 文字 \u0026 字符串看起来像一个错误。它来自哪里?

标签: ruby encoding utf-8 character-encoding decoding


【解决方案1】:

字符& 在您的url 中表示为纯字符串\u0026。那是 6 个字符,而不是表示为 unicode 转义的单个字符。 force_encoding 在这种情况下不会做你的工作。

尝试以下操作,提取字符串中所有喜欢的 unicode 序列,并将它们替换为该代码点处的实际字符。

url="http://www.autokaupat.net/Jyv%E4skyl%E4/\\u0026view=2254630"
url.gsub!(/\\u([a-f0-9]{4,5})/i){ [$1.hex].pack('U') }
puts url
#=> http://www.autokaupat.net/Jyv%E4skyl%E4/&view=2254630

【讨论】:

  • 此正则表达式处于失败状态。如果你有一个字符串“foo&bar”并且编码被弄乱了,所以你有“foo\u0026bar”,这个替换将抓住'b',因为你正在抓取四到五个字符。如果四个字符的 unicode 代码后面的下一个字母是 a-f,就会出现这个问题。
猜你喜欢
  • 2012-09-24
  • 2021-11-19
  • 2015-09-11
  • 2010-12-16
  • 2011-12-19
  • 2011-03-14
  • 1970-01-01
  • 2016-04-27
相关资源
最近更新 更多