【问题标题】:Import UTF-8 characters from database to R Studio将 UTF-8 字符从数据库导入 R Studio
【发布时间】:2018-10-05 09:53:54
【问题描述】:

我正在从 SQL Server 数据库向 R Studio 查询数据。某些列包含应在进一步分析中使用的西里尔字母。但是它们以错误的方式编码,所以我不能使用它们。由于工作隐私,我将创建可重现的示例来显示问题。

library(odbc)
library(pool)
library(DBI)
poolX <- dbPool(drv = odbc::odbc(),
               Driver = "ODBC Driver 17 for SQL Server",
               Database = "database",
               Server = "server",
               UID = "user",
               PWD = "123456")

连接效果很好,让 R Studio 从所需的数据库中查询数据。数据库包含带有字符的表。

City 列包含用俄语书写的城市名称。

在 SQL Server 中显示为:

City = Алматы, Астана

但是,当我将此列查询到 RStudio 单元格时,它是以这种形式编写的:

City = <c0><eb><ec><e0><f2><fb>,<c0><f1><f2><e0><ed><e0>

R 也以不同的形式显示它 独特(城市) #[1] "\xc0\xeb\xec\xe0\xf2\xfb"
#[2] "\xc0\xf1\xf2\xe0\xed\xe0"

有趣的是,如果我将数据从 SQL Server 数据库导入 Excel 并上传到 R Studio,效果很好

我需要从数据库直接连接到 RStudio,所以我必须解决这个问题。 欢迎任何帮助。有什么问题?

【问题讨论】:

    标签: r sql-server utf-8 character-encoding


    【解决方案1】:

    在从 MSSQL 导入之前,您可以将语言环境设置为俄语

    Sys.setlocale(locale = "Russian")
    

    如果您不想将所有内容都设置为俄语,则可以将语言设置为

    Sys.setlocale(category = "LC_CTYPE", locale = "Russian")
    

    例子:

    > City = "Алматы, Астана"
    > data.frame(City)
                                                                                                    City
    1 <U+0410><U+043B><U+043C><U+0430><U+0442><U+044B>, <U+0410><U+0441><U+0442><U+0430><U+043D><U+0430>
    > Sys.setlocale(category = "LC_CTYPE", locale = "Russian")
    [1] "Russian_Russia.1251"
    > 
    > data.frame(City)
                City
    1 Алматы, Астана
    

    【讨论】:

    • 感谢您的回复。不幸的是,它不起作用。重要的想法是西里尔文(“俄语”)字母以某种不同的方式显示。字母看起来像这样: 而用拉丁文写的数字和单词效果很好
    猜你喜欢
    • 2013-05-05
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    相关资源
    最近更新 更多