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

无法在ruby中将ISO8859-1转换为西里尔文,ruby,encoding,utf-8,iso-8859-1,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” 我应该怎么做才能使最后一个单词变成“ГССаа”您最好切换方法的顺序: puts

我有文本“Ðоинаñ”,我想将其转换为西里尔文。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")
#=> �о��ина�

字符串仍然包含断字符,但这可能是原始字符串固有的。像这样的在线工具也会给出同样的结果。

相反。您的字符串是以下操作的结果:

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

puts str
#=> ÐоÑÑинаÑ
要将其还原,请使用:

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

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

所以你说,不可能获得原始单词,但2cyr.com可以对其进行编码,不是吗?对我来说不起作用。它返回“\xD0ö\xD1\xD1аа\xD1”@user3434212这是由于StackOverflow的文本处理,我刚刚更新了我的答案-请再试一次。值得注意的是,您的原始字符串是某个错误解释编码的结果,不应该发生这种情况。