R:将错误显示的外来字符转换为正确的编码double mojibake

问题描述

在 R 中,我有这样的向量:

TEST <- c("BlAA¶schl,G","ThAA¶ni,A.")

其中 BlAA¶schl 应该是 Blöschl,而 ThAA¶ni 应该是 Thöni

整个数据集都存在类似的问题。我不知道它是如何命名的(也许是“非 ASCII 字符”?)。

基于this response,其他人似乎已经成功尝试了此代码:

Encoding(TEST) <- 'latin1'
stringi::stri_trans_general(TEST,'Latin-ASCII')

但就我而言,没有任何变化。

如何将 AA¶ 之类的字符转换为 ö


编辑:关键问题似乎是评论中提到的 JosefZ 中提到的“双重 mojibake”。

EDIT 2:我发现这个“UTF-8 Character Debug Tool”包含 actualexpected 列中的一些(不是全部)问题。此外,this "encoding repairer" on GitHub 似乎提供了我需要的东西,但它不是用 R 编写的。

解决方法

可能会有更好、更高效和自动化的解决方案。

但我手动尝试过:我查看了所有“mojibakes”并手动将它们更改为 gsub

TEST <- c("BlAA¶schl,G","ThAA¶ni,A.")

TEST <- gsub("ö","ö",TEST)
TEST <- gsub("ü","ü",TEST)
TEST <- gsub("ž","z",TEST)
TEST <- gsub("á","á",TEST)
TEST <- gsub("ä","ä",TEST)
TEST <- gsub("ć","ć",TEST)
TEST <- gsub("Ã","Á",TEST)
TEST <- gsub("ß","ß",TEST)
TEST <- gsub("ã","ã",TEST)
TEST <- gsub("é","é",TEST)
TEST <- gsub("Ä","č",TEST)

它有效,但如果数据集太大,总会有遗漏某些字符的风险。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...