【发布时间】:2018-02-12 10:11:46
【问题描述】:
我尝试使用 DBI 包连接到 Sybase 数据库,但查询未正确返回希腊字符。
与 SQL 服务器的连接也是如此。这是dbConnect 命令的示例:
library(odbc)
con <- dbConnect(odbc::odbc(), .connection_string = "Driver={SQL Server};server=ATLAS;database=master;trusted_connection=true")
我在使用 RODBC(系统 DSN 相同)时没有问题
表格内容:
> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=Greek_Greece.1253 LC_CTYPE=Greek_Greece.1253 LC_MONETARY=Greek_Greece.1253 LC_NUMERIC=C
[5] LC_TIME=Greek_Greece.1253
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] odbc_1.1.1
loaded via a namespace (and not attached):
[1] bit_1.1-12 compiler_3.4.1 hms_0.3 DBI_0.7 tools_3.4.1 tibble_1.3.4 yaml_2.1.14 Rcpp_0.12.12 bit64_0.9-7
[10] blob_1.1.0 rlang_0.1.2
【问题讨论】:
-
会不会是您的 perl 安装中没有匹配的语言包?通过 DBI 连接时返回什么?
-
我没有安装 perl。 > dbConnect(odbc::odbc(), "PIND_ERGOSE", CharSet = "cp1253")
dbo@omiros 数据库:ERGOSE SQL Server 版本:12.50.0000 -
@GeorgeDontas 我的感觉是您的 CharSet 有问题。见sourceforge.net/p/jtds/bugs/440nb。几年前我在 Windows 上遇到了类似的问题,不得不更改字符集。为什么? Cp1252 没有定义 128 到 160 之间的值,因此它们被转换为 ?。我希望以上内容有所帮助。
-
旧的 ODBC 驱动程序不支持 unicode 编码(即 nvarchar)。尝试使用更新版本的 SNAC,
Driver={SQL Server Native Client 11.0};
标签: sql-server r rstudio sybase