我在Windows机器上运行R,它直接链接到PostgreSQL数据库.我没有使用RODBC.我的数据库采用UTF-8编码,如下R命令所示:
dbGetQuery(con, "SHOW CLIENT_ENCODING")
# client_encoding
# 1 UTF8
然而,当一些文本读入R时,它在R中显示为奇怪的文本.
例如,以下文本显示在我的PostgreSQL数据库中:
导出到R后,显示为:
导入到R时,我使用dbConnect
命令建立连接,使用dbGetQuery
命令使用SQL查询数据.在连接到数据库或运行查询时,我不会在任何地方指定任何文本编码.
我在网上搜索过,找不到直接解决问题的方法.我找到了this link个,但他们的问题是RODBC,我没有使用.
This link有助于识别符号,但我不只是想查找&;替换为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中不会发生.