如何将带有\ xf6字符的String转换为人类可读的字符串?

时间:2013-03-06 17:16:20

标签: ruby ruby-on-rails-3 utf-8 iconv

目前我正在使用PayPal结帐处理Rails应用程序。 PayPal通过IPN消息与我的应用进行通信。

在许多情况下一切正常,但如果有人使用像德语变音符号(öüäß)这样的特殊字符,我会在字符串中得到\xf6

如何将其转换为人类可读的字符'ö'

2 个答案:

答案 0 :(得分:9)

问题是数据被编码为Windows-1252,但ruby不会自动检测到。你可以像这样哄它:

my_string = "Sch\xF6ning"
my_string.force_encoding('windows-1252').encode('utf-8')
=> "Schöning"

你可以制作一个可重复使用的转换器来帮助你做同样的事情:

ec = Encoding::Converter('windows-1252', 'utf-8')
ec.convert(my_string)
=> "Schöning"

答案 1 :(得分:0)

请注意,paypal方面有一个设置:

在卖家paypal帐户中转到:个人资料>我的销售工具> PayPal按钮语言编码>更多选择