在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编码,并且某个地方运行了一个进程,基于cp1251将字节转换为UTF-8 -> UTF-8映射规则。但是,当您对不是真正由cp1251编码的数据运行此命令时,会得到奇怪的值。

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...