从RStudio连接到Oracle数据库时,我遇到了编码错误的问题。我尝试了RODBC
和ODBC
个包。
当我使用sqlQuery()
或dplyr
查询数据库时,挪威字母(Æ,Ø和Å)无法正确显示。
我尝试将默认文本编码i RStudio设置为UTF-8,并使用UTF-8编码保存R脚本,但问题仍然存在。
使用SELECT * FROM NLS_DATABASE_PARAMETERS
查询数据库时,我发现数据库有NLS_CHARACTERSET WE8MSWIN1252
,所以我尝试在连接时指定这个。
con <- dbConnect(odbc::odbc(), "RStudio", uid = "user",
pwd = "password", encoding = "WE8MSWIN1252")
但是这只给了我这个错误信息:
Error in new_result(connection@ptr, statement) :
Can't convert from WE8MSWIN1252 to UTF-8
关于我做错的任何想法?
答案 0 :(得分:0)
应该将dbConnect中的encoding参数设置为运行R的系统使用的编码,而不是数据库中使用的编码(根据NLS_LANG系统环境变量)。因此,如果您在Windows计算机上运行R / Rstudio,则应该执行'encoding =“ cp1252”'或'encoding =“ latin1”'。但是,如果您使用的是Linux或Mac,则“ encoding =“ UTF8”应该可以正常工作”。如果这不起作用,请确保正确设置了NLS_LANG。
(如果使用Rstudio服务器,则必须在.Renviron文件中设置NLS_LANG,因为Rstudio服务器不会导出操作系统范围的环境变量)