【问题标题】:DBI connection to SQL Server (and Sybase 12.5) does not return greek characters与 SQL Server(和 Sybase 12.5)的 DBI 连接不返回希腊字符
【发布时间】: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


【解决方案1】:

请尝试在dbConnect() 中设置encoding 参数。来自?odbc::dbConnect

encoding:数据库上使用的文本编码。如果数据库是 与您的本地编码设置为“”“”相同。看 ‘iconvlist()’ 获取可用编码的完整列表 你的系统。注意字符串总是返回“UTF-8” 编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2017-01-20
    • 1970-01-01
    • 2011-07-03
    相关资源
    最近更新 更多