我一直在使用googlesheets
包来上传和下载网页表中的数据。以前,它一直在使用带有图标 的非ASCII符号下载字符串。现在,由于没有明显的原因,它已经开始使用以下字符串下载它们:�
。如何将�
转换为菱形问号( )?
答案 0 :(得分:1)
您可能遇到编码问题。我怀疑原始数据是用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
将会有&#34;未知&#34;编码,被解释为&#34; UTF-8&#34;在Linux和MacOS上,但不在Windows上。
如果你正在使用Windows,那么修复可能会简单得多。如果您的数据具有"unknown"
编码,那么在MacOS和Linux上它将(正确地)解释为UTF-8,但在Windows上它将使用您的本机编码解释,通常是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 �"