Ruby:将十六进制格式的特殊字符转换为常规字符串

时间:2017-04-16 06:59:05

标签: ruby string hex character pack

我正在开发Ruby 2.2中的客户订单自动化脚本。 这需要一个传入的客户电子邮件正文并将其拆分为各种参数。

但是,我遇到一个问题,任何“特殊字符”(例如Æ,Ø,Å,ü,......)都会转换为十六进制格式,即“Ø”变为“C398”。

我想将这些转换为正确的字符。 到目前为止,我已成功完成以下工作:

puts ["C398"].pack('H*') => Ø

然而,当我有一个很长的电子邮件正文时,问题出现了,只有少数几个字符是十六进制格式。即如果我在完整地址上面运行,我会得到:

puts s = ["P.P. C398rums Gade"].pack('H*') => ��9����

是否有一种聪明的方法来挑出“十六进制”字符并仅转换那些字符,同时保留长邮件正文字符串的其他部分完整无缺?

谢谢!

马丁

0 个答案:

没有答案