r - 将 `�` 字符串转换为 R 中的菱形问号符号 (�)

标签 r google-sheets-api

我一直在使用 googlesheets 包从网页表上传和下载数据。此前,它一直在下载带有图标 � 的非 ASCII 符号的字符串。现在,没有任何明显的原因,它已开始使用以下字符串下载它们:�。如何将 � 转换为菱形问号 (�)?

最佳答案

您可能遇到编码问题。我怀疑原始数据是用 UTF-8 编码的,但在某些时候它被视为 Windows-1252。

当编码被错误地标记为 Windows-1252,然后转换为 UTF-8 时,会发生以下情况:

x <- "Here is a raw string: � is getting converted to �"
(y <- iconv(x, "WINDOWS-1252", "UTF-8"))
#> [1] "Here is a raw string: � is getting converted to �"

您可以通过从 UTF-8 转换为 Windows-1252,然后将结果标记为 UTF-8 来修复编码错误:

z <- iconv(y, "UTF-8", "WINDOWS-1252")
Encoding(z) <- "UTF-8"
print(z)
#> [1] "Here is a raw string: � is getting converted to �"

注意:如果您省略 Encoding(z) <- "UTF-8",代码仍然可以在 MacOS 和 Linux 上运行。行,但它会在 Windows 上中断。如果您省略该行,则 z将具有“未知”编码,在 Linux 和 MacOS 上被解释为“UTF-8”,但在 Windows 上则不然。

Windows 用户

如果您使用的是 Windows,那么修复可能会简单得多。如果您的数据有"unknown"编码,那么在 MacOS 和 Linux 上它将(正确地)被解释为 UTF-8,但在 Windows 上它将使用您的 native 编码(通常是 Windows-1252)进行解释。如果您使用的是 Windows,则会发生类似以下情况:

x <- "Here is a raw string: � is getting converted to �"
y <- x
Encoding(y) <- "unknown"
print(y)
#> [1] "Here is a raw string: � is getting converted to �"

您可以按如下方式修复此问题:

z <- y
Encoding(z) <- "UTF-8"
print(z)
#> [1] "Here is a raw string: � is getting converted to �"

关于r - 将 `�` 字符串转换为 R 中的菱形问号符号 (�),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268942/

相关文章:

r - 将 RStudio 演示文稿 (.Rpres) 转换为 rmarkdown 演示文稿 (.Rmd)

r - R情节中的图例

r - 使用 dplyr 和 mutate 对多列中的每一列使用单独的条件

javascript - 谷歌应用脚​​本: Trouble Passing URL Params from doGet() to doPost()

r - 使用 tidyr,当传播值获得 NA

r - 为什么 ggplot 图例同时显示线条颜色和线型?

javascript - 如何传回数组

java.net.SocketTimeoutException : Read timed out while downloading google spreadsheet

Python 和 Google Sheets - 检查数据在哪一行

javascript - 使用默认凭据访问 Google 表格