如何将\\ u0026转换为&用红宝石

时间:2014-06-26 08:55:00

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

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

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

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

url.force_encoding('UTF-8')

仅当我删除其中一个前导反斜杠时才有效。

有关如何修复的任何想法?

1 个答案:

答案 0 :(得分:1)

字符&\u0026中表示为纯字符url。这是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