在 R 中解码西里尔字符串

Decoding Cyrillic string in R

我想在 R 中解码这个字符串:обезпечен。所需的输出应为:обезпечен

这个site建议源编码是UTF-8,应该转码成Windows-1251。所以我尝试了这个但没有成功:

> word <- "обезпечен"
> iconv(word, from = "UTF-8",to = "Windows-1251")
[1] "обезпечен"

这些步骤似乎可以解决问题

word <- "обезпечен"

xx <- iconv(word, from="UTF-8", to="cp1251")
Encoding(xx) <- "UTF-8"
xx
# [1] "обезпечен"

target <- "обезпечен"
xx == target
# [1] TRUE

所以似乎发生的事情是在某一时刻构成 UTF-8 target 值的字节被误解为 cp1251 编码,并且某个进程 运行 将字节转换为 UTF- 8 基于cp1251->UTF-8映射规则。但是,当您 运行 对并非真正 cp1251 编码的数据执行此操作时,您会得到奇怪的值。

iconv(target, from="cp1251", to="UTF-8")
# "обезпечен"