将rodbc/odbc/dbplyr与SQL-Server一起使用时,非拉丁字符显示为问号 [英] Non-Latin characters show as question marks when using rodbc/odbc/dbplyr with SQL-Server

查看:0
本文介绍了将rodbc/odbc/dbplyr与SQL-Server一起使用时,非拉丁字符显示为问号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用dbplyr将数据从SQL-Server获取到R中,但中文、日文和其他非拉丁字符显示为"?"。我正在使用Windows计算机。

我已经通读了以下帖子:

这些提供了一些有用的想法,但到目前为止都没有奏效。我已尝试:

  • dbConnect函数内设置encoding = 'UTF-8'。字符仍显示为问号。

  • dbConnect函数内设置encoding = 'UTF-16'。R返回错误:# Error in iconv(x[current], from = enc, to = to, ...)

  • 使用Sys.setenv(LANG = "UTF-8")将全局字符编码更改为UTF-8 和options(encoding = "UTF-8")

  • 检查打印时是否显示字符(这将表明字符存储正确)。情况并非如此。

我能够通过使用RJDBC正确显示字符,但根据GitHub issue的说法,这与dbplyr不兼容。

以下是我的会话信息:

> sessionInfo()
# R version 3.5.0 (2018-04-23)
# Platform: x86_64-w64-mingw32/x64 (64-bit)
# Running under: Windows >= 8 x64 (build 9200)

# Matrix products: default

# locale:
# [1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United Kingdom.1252    LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C                           
# [5] LC_TIME=English_United Kingdom.1252

我的代码如下:

> con <- dbConnect(odbc(),
                   Driver   = "SQL Server",
                   Server   = "server name",
                   Database = "database name",
                   user     = "my username",
                   password = "my password",
                   encoding = "UTF-8")

odbc/dbplyr确实可以在Windows上处理这些字符类型,那么我在这里遗漏了什么?

如有任何帮助,我们将不胜感激!

推荐答案

查看iconvlist()可用的编码列表。 我使用encoding = "windows-1252",以便能够使用ODBC 1.2.2版正确处理北欧字符。

虽然我没有使用中文或日文字符,但编码值&g18030";、";gb2312";和";GBK";可以用于例如中文国标。

维基百科有一个有用的page(滚动到列表底部)。

这篇关于将rodbc/odbc/dbplyr与SQL-Server一起使用时,非拉丁字符显示为问号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆