当我使用RODBC从R连接到GreenPlum PostgreSQL数据库时,出现了一个以前从未出现过的新错误。我使用EMACS/ESS和RStudio都得到了这个错误,RODBC调用也像过去一样工作。

library(RODBC)
gp <- odbcConnect("greenplum", believeNRows = FALSE)
data <- sqlQuery(gp, "select * from mytable")

> data
[1] "22P05 7 ERROR: character 0xc280 of encoding \"UTF8\" has no equivalent in  "WIN1252\";\nError while executing the query"
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select * from mytable'"

编辑:
只是试着查询另一个表并得到了结果。所以我想这不是RODBC问题,而是PostgreSQL表编码问题。
R version 2.13.0 (2011-04-13)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] RODBC_1.3-2
>

最佳答案

首先,出现这个问题是因为R试图转换成支持UTF8的Windows语言环境。不幸的是,Brian Ripley已经多次报告Windows没有UTF8语言环境。从搜索web、StackOverflow、Microsoft等网站的几个小时里,我得出了这样的结论:微软讨厌UTF-8windows,它不支持UTF8。
因此,我不确定是否有一个简单的解决办法,如果有任何解决办法的话。我最好的建议是在服务器端包装某种转换,如果可以的话查看数据过滤,或者如果合适的话尝试其他语言(例如中文、日语、韩语)。
如果您决定包装转换器,unicode.org recommendsthis ICU toolkit

10-08 14:33