Dim*_*ski 4 ruby utf-8 iconv ruby-on-rails-3
目前我正在使用PayPal结账处理Rails应用程序.PayPal通过IPN消息与我的应用进行通信.
在许多情况下一切正常,但如果有人使用像德语变音符号(öüäß)这样的特殊字符,我会\xf6进入字符串.
如何将其转换为人类可读的字符'ö'?
问题是数据被编码为Windows-1252,但ruby不会自动检测到.你可以像这样哄它:
my_string = "Sch\xF6ning"
my_string.force_encoding('windows-1252').encode('utf-8')
=> "Schöning"
Run Code Online (Sandbox Code Playgroud)
你可以制作一个可重复使用的转换器来帮助你做同样的事情:
ec = Encoding::Converter('windows-1252', 'utf-8')
ec.convert(my_string)
=> "Schöning"
Run Code Online (Sandbox Code Playgroud)