R 如何更改数据库连接区域设置?

R 如何更改数据库连接区域设置?,r,odbc,locale,r-dbi,R,Odbc,Locale,R Dbi,在R中使用DBI包时,我在更改“locale”时遇到问题。更具体地说,我的数据库包含诸如“é,è,è,…”之类的字符,DBI无法正确读取它们 当我使用RODBC包执行相同的查询时,它确实得到了正确的结果。我的问题:如何使用DBI包获得正确的结果(即正确读取“é,è,è,…”) 这应该是一个可复制的示例: sql <- "select * from myDatabase.dbo.myTable" # Where myTable contains any of the difficult ch

在R中使用DBI包时,我在更改“locale”时遇到问题。更具体地说,我的数据库包含诸如“é,è,è,…”之类的字符,DBI无法正确读取它们

当我使用RODBC包执行相同的查询时,它确实得到了正确的结果。我的问题:如何使用DBI包获得正确的结果(即正确读取“é,è,è,…”)

这应该是一个可复制的示例:

sql <- "select * from myDatabase.dbo.myTable"
# Where myTable contains any of the difficult characters

# Try with DBI
library(odbc)
library(DBI)

conDBI <- dbConnect(
  odbc::odbc(),
  dsn   = "myDsn",
  UID   = myLogin,
  PWD   = myPassword,
  Port  = 1433
)

table_DBI <- dbGetQuery(conDBI, sql)

# Try with RODBC
library(RODBC)

conRODBC <- odbcConnect(
  "myDsn",
  uid = myLogin,
  pwd = myPassword
)

table_RODBC <- sqlQuery(conRODBC, sql)

您是否尝试过在dbConnect函数中使用encoding参数?它应该是数据库上使用的文本编码。如果数据库与设置为“”的本地编码相同,请参阅iconvlist(),以获取系统上可用编码的完整列表。注意:字符串始终返回UTF-8编码

您可以尝试:

conDBI <- dbConnect( 
odbc::odbc(), 
dsn = "myDsn", 
UID = myLogin, 
PWD = myPassword, 
Port = 1433, 
encoding = "latin1" )

conDBI您是否尝试过在dbConnect函数中使用encoding参数?它应该是数据库上使用的文本编码。如果数据库与设置为“”的本地编码相同,请参阅iconvlist(),以获取系统上可用编码的完整列表。注意:字符串始终返回UTF-8编码

您可以尝试:

conDBI <- dbConnect( 
odbc::odbc(), 
dsn = "myDsn", 
UID = myLogin, 
PWD = myPassword, 
Port = 1433, 
encoding = "latin1" )

conDBI您看过这个吗:?这似乎表明我需要更改数据在数据库中的存储方式。但我使用的是一个公司范围的数据库,不在我的控制之下。因此,我需要一个解决方案,在我这边修复它(使用DBI包)。这应该是可能的,因为RODBC包正是这样做的。这可能行得通吗?这个解释可能只对MySQL有效吗?它适用于SQL Server数据库吗?无论如何,它看起来非常精致。。。我不是一个神童,所以我希望有一个更简单的解决方案;-)。如果存在,当然。您是否尝试过在dbConnect函数中使用encoding参数?它应该是数据库上使用的文本编码。如果数据库与本地编码相同,请将其设置为“”。有关系统上可用编码的完整列表,请参见iconvlist()。注意字符串总是返回UTF-8编码。您可以尝试:conDBI您看过这个吗:?这似乎表明我需要更改数据在数据库中的存储方式。但我使用的是一个公司范围的数据库,不在我的控制之下。因此,我需要一个解决方案,在我这边修复它(使用DBI包)。这应该是可能的,因为RODBC包正是这样做的。这可能行得通吗?这个解释可能只对MySQL有效吗?它适用于SQL Server数据库吗?无论如何,它看起来非常精致。。。我不是一个神童,所以我希望有一个更简单的解决方案;-)。如果存在,当然。您是否尝试过在dbConnect函数中使用encoding参数?它应该是数据库上使用的文本编码。如果数据库与本地编码相同,请将其设置为“”。有关系统上可用编码的完整列表,请参见iconvlist()。注意字符串总是返回UTF-8编码。你可以试试:康比