在 ruby 中无法将 ISO8859-1 转换为西里尔字母

Cannot convert ISO8859-1 to cyrillic in ruby

我有文本 "ÐоÑÑинаÑ",我想将其转换为西里尔文。 2cyr.com 表示这是 ISO8859-1 格式。我试过了

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

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

我应该怎么做才能使最后一个词成为 "Γостиная"

您最好的办法是切换方法的顺序:

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

您的字符串仍然包含损坏的字符,但这很可能是您的原始字符串所固有的。 this one 等在线工具给出了相同的结果。

正好相反。您的字符串是以下结果:

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

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

要还原它,请使用:

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

当然,这只有在格式错误的字符串完好无损(它包含几个不可见/不可打印的字符)的情况下才有效。