在 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")
# "обезпечен"
我想在 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")
# "обезпечен"