我在直接链接到 PostgreSQL 数据库的 Windows 机器上运行 R。我没有使用 RODBC。我的数据库以 UTF-8 编码,由以下 R 命令确认:
dbGetQuery(con, "SHOW CLIENT_ENCODING")
# client_encoding
# 1 UTF8
但是,当某些文本被读入 R 时,它会在 R 中显示为奇怪的文本。
例如,以下文本显示在我的 PostgreSQL 数据库中:“Stéphane”
导出到 R 后显示为:“Stéphane”(é编码为é ©)
导入到 RI 时,使用dbConnect
命令建立连接并dbGetQuery
使用 SQL 查询数据的命令。在连接到数据库或运行查询时,我没有在任何地方指定任何文本编码。
我在网上搜索并找不到直接解决我的问题的方法。我找到了这个链接,但他们的问题是我没有使用的 RODBC。
此链接有助于识别符号,但我不只是想在 R 中进行查找和替换...太多的数据。
我确实尝试在下面运行以下命令,但收到了警告。
Sys.setlocale("LC_ALL", "en_US.UTF-8")
# [1] ""
# Warning message:
# In Sys.setlocale("LC_ALL", "en_US.UTF-8") :
# OS reports request to set locale to "en_US.UTF-8" cannot be honored
Sys.setenv(LANG="en_US.UTF-8")
Sys.setenv(LC_CTYPE="UTF-8")
警告出现在Sys.setlocale("LC_ALL", "en_US.UTF-8")
命令上。我的直觉是,这是一个特定于 Windows 的问题,Mac/Linux/Unix 不会发生。