R: 将错误显示的外文字符转换为正确的编码(double mojibake)
R: Convert wrong display of foreign characters into a correct encoding (double mojibake)
在 R 中,我有这样的向量:
TEST <- c("BlAA¶schl, G", "ThAA¶ni, A.")
其中 BlAA¶schl
应为 Blöschl
,而 ThAA¶ni
应为 Thöni
。
整个数据集都存在类似的问题。我不知道它是如何命名的(也许是“非 ASCII 字符”?)。
基于,其他人似乎已成功尝试此代码:
Encoding(TEST) <- 'latin1'
stringi::stri_trans_general(TEST, 'Latin-ASCII')
但就我而言,没有任何变化。
如何将 AA¶
等字符转换为 ö
?
编辑:关键问题似乎是JosefZ提到的“双”在评论中。
编辑 2:我发现这个“UTF-8 Character Debug Tool" which contains some (not all) of the problems in the actual
and expected
columns. In addition, 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)
它有效,但如果数据集太大,则总是存在遗漏某些字符的风险。
在 R 中,我有这样的向量:
TEST <- c("BlAA¶schl, G", "ThAA¶ni, A.")
其中 BlAA¶schl
应为 Blöschl
,而 ThAA¶ni
应为 Thöni
。
整个数据集都存在类似的问题。我不知道它是如何命名的(也许是“非 ASCII 字符”?)。
基于
Encoding(TEST) <- 'latin1'
stringi::stri_trans_general(TEST, 'Latin-ASCII')
但就我而言,没有任何变化。
如何将 AA¶
等字符转换为 ö
?
编辑:关键问题似乎是JosefZ提到的“双
编辑 2:我发现这个“UTF-8 Character Debug Tool" which contains some (not all) of the problems in the actual
and expected
columns. In addition, 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)
它有效,但如果数据集太大,则总是存在遗漏某些字符的风险。