2017-09-04 49 views
6

我嘗試使用DBI包連接到Sybase數據庫,但查詢不能正確返回希臘字符。到SQL Server(和Sybase 12.5)的DBI連接不返回希臘字符

與連接到SQL服務器的連接相同。下面是一個dbConnect命令的例子:

library(odbc) 
con <- dbConnect(odbc::odbc(), .connection_string = "Driver={SQL Server};server=ATLAS;database=master;trusted_connection=true") 

我沒有問題,當我用RODBC(具有相同的系統DSN)

enter image description here

表內容:

enter image description here

> 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 
+0

難道你在你的perl安裝中沒有匹配的語言包?通過DBI連接時返回什麼? –

+0

我沒有perl安裝。 _>數據庫連接(ODBC :: ODBC() 「PIND_ERGOSE」,字符集= 「cp1253」) DBO @ Omiros酒店 數據庫:ERGOSE 的SQL Server版本:12.50.0000_ –

+0

@GeorgeDontas我的感覺是有問題你的CharSet。 查看https://sourceforge.net/p/jtds/bugs/440/ nb。幾年前我在Windows上遇到類似的問題,必須更改字符集。爲什麼? Cp1252沒有定義128到160之間的值,所以它們被轉換爲?。 我希望上面的幫助。 – Technophobe01

回答

0

請嘗試在dbConnect()中設置encoding參數。來自?odbc::dbConnect

編碼:數據庫上使用的文本編碼。如果數據庫是 與您的本地編碼設置爲'「」'相同。請參閱 'iconvlist()'以獲取您的系統上可用編碼的完整列表 。注意字符串總是返回'UTF-8' 編碼。