如何在R语言中将CSV文件中的俄文乱码地区名转为英文?
解决R语言中CSV俄文乱码并转为英文的方案
嘿,我之前也碰到过这种俄文CSV乱码的问题,咱们一步步来搞定它:
第一步:先修复乱码,还原正确的俄文
你看到的「СвердловÑÐºÐ°Ñ Ð¾Ð±Ð»Ð°Ñть」这种乱码,是典型的编码不匹配导致的 mojibake(字符错乱)——大概率是你的CSV文件本身用UTF-8编码保存,但读取时错误用了russian(即Windows-1251)解码,反过来就出现了乱码。
试试这两种方法修复:
- 直接用UTF-8编码重新读取文件
df <- read.csv(file.choose(), sep = ',', header = TRUE, encoding = "UTF-8", stringsAsFactors = FALSE)
- 如果上面的方法没用,就把已读取的乱码字符串反向转码(把Windows-1252解码的内容转回UTF-8)
假设你的地区名称列叫region,执行:
df$region <- iconv(df$region, from = "Windows-1252", to = "UTF-8")
执行完这步,你应该能看到正常的俄文地区名称了。
第二步:将俄文转为英文
修复完乱码后,有两种常用的方式转成英文:
方式1:手动映射(适合地区数量少的情况)
如果你的CSV里的俄罗斯地区名称不多,可以自己创建一个俄英对照的字典,直接替换:
# 先把你修复后的俄文名称和对应的英文填进去 region_dict <- c( "Свердловская область" = "Sverdlovsk Oblast", "Личные вещи" = "Personal Items" # 示例,根据你的实际内容调整 ) # 生成英文列 df$region_en <- region_dict[df$region]
方式2:用API自动翻译(适合大量地区名称)
如果地区数量多,推荐用谷歌翻译的API,借助googleLanguageR包实现:
- 先安装并加载包:
install.packages("googleLanguageR") library(googleLanguageR)
- 你需要先去谷歌云平台申请翻译API的密钥(免费额度足够小项目用),然后加载密钥:
gl_auth("你的API密钥文件路径.json") # 或者设置环境变量Sys.setenv(GOOGLE_APPLICATION_CREDENTIALS = "路径")
- 执行翻译:
# 把region列的俄文翻译成英文,生成新的region_en列 df$region_en <- gl_translate(df$region, target = "en", source = "ru")$translatedText
如果不想用谷歌API,也可以试试translateR包(支持微软Azure翻译API),操作逻辑类似。
内容的提问来源于stack exchange,提问作者Nikhil




