在 SQL-Server 中使用 rodbc/odbc/dbplyr 时,非拉丁字符显示为问号

Max*_*axL 5 sql-server odbc r utf-8 dbplyr

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

\n\n

我已阅读以下主题:

\n\n\n\n

这些提供了一些有用的想法,但到目前为止还没有任何效果。我努力了:

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

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

  • \n
  • 使用以下命令将全局字符编码更改为 UTF-8:Sys.setenv(LANG = "UTF-8")\nandoptions(encoding = "UTF-8")

  • \n
  • 检查绘图时是否显示字符(这表明它们已正确存储)。事实并非如此。

  • \n
\n\n

我能够使用 RJDBC 正确显示字符,但是根据此GitHub 问题,这与 dbplyr 不兼容。

\n\n

这是我的会话信息:

\n\n
> sessionInfo()\n# R version 3.5.0 (2018-04-23)\n# Platform: x86_64-w64-mingw32/x64 (64-bit)\n# Running under: Windows >= 8 x64 (build 9200)\n\n# Matrix products: default\n\n# locale:\n# [1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United Kingdom.1252    LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C                           \n# [5] LC_TIME=English_United Kingdom.1252\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的代码如下所示:

\n\n
> con <- dbConnect(odbc(),\n                   Driver   = "SQL Server",\n                   Server   = "server name",\n                   Database = "database name",\n                   user     = "my username",\n                   password = "my password",\n                   encoding = "UTF-8")\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

任何帮助将非常感激!

\n

Zak*_*aki 0

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

虽然我没有使用过中文或日文字符,但编码值“GB18030”、“gb2312”和“GBK”可以用于中文国标。

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