首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ROracle中编码

在ROracle中编码
EN

Stack Overflow用户
提问于 2018-05-16 16:50:24
回答 2查看 964关注 0票数 0

我在使用ROracle从甲骨文数据库导入挪威字符时遇到了问题。我以前也遇到过类似的RODBC问题。从csv和xlsx等文件导入时没有问题,我确信问题出在使用ROracle导入时设置编码,但文档并没有真正告诉我如何做到这一点。

不同的答案编写了一个在导入后转换为UTF-8的函数,但这不是一个适合我的解决方案。我希望使用dplyr包对oracle DB进行查询,并且需要能够使用像æøå这样的字母进行查询。

下面是我的连接字符串和用作测试的sql查询:

代码语言:javascript
复制
library(ROracle)

drv <- dbDriver("Oracle", unicode_as_utf8 = TRUE, ora.attributes = TRUE)
# Create the connection string
host <- "xx.xxx.xx.x"
port <- xxxx
sid <- "xxxxxx"
connect.string <- paste(
  "(DESCRIPTION=",
  "(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
  "(CONNECT_DATA=(SID=", sid, ")))", sep = "")
con <- dbConnect(drv, username = "",
                 password = "",dbname=connect.string)

test <- dbGetQuery(con, "SELECT DECODE FROM T_CODE where key_id=17")

得到的结果是这样的:R?dgivningskontor

以下是我的会话信息:

代码语言:javascript
复制
R version 3.5.0 (2018-04-23)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.4

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

other attached packages:
[1] ROracle_1.3-1 DBI_1.0.0    

loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0    yaml_2.1.19  
EN

回答 2

Stack Overflow用户

发布于 2020-09-30 22:38:58

我已经在这个问题上挣扎了两天,但我只是找到了一个解决方案。

我的问题是无法正确显示"ü“或"é”之类的字符(出于测试目的,我还添加了显示为“?”的"ø“)。我试图用不同的方式和不同的字符集来设置NLS_LANG环境变量。

最后,以下是对我有效的步骤:

  1. NLS_LANG="AMERICAN_AMERICA.AL32UTF8"添加到.Renviron文件。这适用于我的情况,其中Oracle DB显示NLS_CHARACTERSET=WE8ISO8859P15,客户端的语言环境ID显示en_US.UTF-8.
  2. Save文件并重新启动RStudio会话。

当再次运行和查询数据库时,此时字符显示正确。

票数 0
EN

Stack Overflow用户

发布于 2022-02-09 15:37:40

无可奉告,所以我写了这篇文章作为回答。

.Renviron解决方案适用于西班牙语数据库,但当我使用NLS_LANG="AMERICAN_AMERICA.AL32UTF8"时,密码和用户名出现错误。

然后我找到了这个article,最后明白了,我的解决方案是。

代码语言:javascript
复制
# First with 'usethis' library create the .Renviron
library(usethis)
usethis::edit_r_environ()

# Then add the NLS_LANG in Renviron
# NLS_LANG=".WE8ISO8859P1"

# If for some reason Renviron wont load you can use this in your script
readRenviron("path_to_the_file/.Renviron")

当然,重启RStudio,我最终可以获得ñ字符,而不是? simbol。

感谢@Ion Garaicoechea

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50366322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档