无法将ISO8859-1转换为红宝石中的西里尔文

时间:2015-08-18 11:20:44

标签: ruby encoding utf-8 iso-8859-1

我有文字“ÐоÑÑинає,我想把它转换成西里尔文。 2cyr.com说这是ISO8859-1格式。我试过了

"ÐоÑÑинаÑ".force_encoding("ISO8859-1").encode("UTF-8")

但它返回=> "Ã\u0090Â\u0093Ã\u0090¾Ã\u0091Â\u0081Ã\u0091Â\u0082Ã\u0090¸Ã\u0090½Ã\u0090°Ã\u0091Â\u008F"

我应该怎样做才能使最后一句话成为“Гостиная”

2 个答案:

答案 0 :(得分:2)

反过来说。你的字符串是:

的结果
str = "Гостиная".force_encoding('ISO8859-1').encode('UTF-8')
#=> "Ð\u0093оÑ\u0081Ñ\u0082инаÑ\u008F"

puts str
#=> ÐоÑÑинаÑ

要还原它,请使用:

str.encode('ISO8859-1').force_encoding('UTF-8')
#=> "Гостиная"

当然,这只适用于格式错误的字符串保持不变(它包含几个不可见/不可打印的字符)。

答案 1 :(得分:0)

你能做的最好的就是改变方法的顺序:

puts "ÐоÑÑинаÑ".encode("CP1252")
#=> �о��ина�

您的字符串仍包含损坏的字符,但这可能是原始字符串固有的。像this one这样的在线工具可以得到相同的结果。