使用WE8MSWIN1252编码

时间:2018-04-18 14:03:29

标签: r oracle dplyr rodbc

从RStudio连接到Oracle数据库时,我遇到了编码错误的问题。我尝试了RODBCODBC个包。

当我使用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

关于我做错的任何想法?

1 个答案:

答案 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服务器不会导出操作系统范围的环境变量)