【问题标题】:Encoding Issue when fetching data from MySQL DB into R将数据从 MySQL DB 提取到 R 时出现编码问题
【发布时间】:2015-08-17 15:06:56
【问题描述】:

我正在使用 R 中的“RMySQL”库将数据从本地 MySQL 数据库加载到 R:

con <- dbConnect(MySQL(), user="root", password="****", dbname="twitterdata", host="localhost")
dataframe <- dbGetQuery(con, "SELECT id, plaintext, category FROM table")

当我检查数据框时,我看到许多未格式化的字符,例如显示为 ’ 的倾斜撇号 (´)。

经过一番研究,我发现根据this网站,一些特殊字符(包括斜撇号)不是ISO-8859-1标准的一部分,而是标准的一部分Windows-1252 标准。

当我跑步时

Sys.getlocale("LC_CTYPE")

在 R 中,它说:

"German_Austria.1252"

它不是已经说我使用了正确的编码吗?! 在我的数据库(默认字符集:UTF-8)中,撇号编码良好。

我也尝试在 dbConnect 语句中添加一个参数 DBMSencoding="utf-8" 但没有效果。

当我跑步时

Encoding(x)

在 R 中(其中 x 是字符向量 - 一个句子),答案是

"unknown"

现在有人知道解决这个问题吗?

非常感谢!

【问题讨论】:

  • this 有帮助吗? Afaik,' 应该是 iso-8859-x 和 utf-8 的一部分。您可能需要在 R 中正确编码。
  • 是的 ' 是 iso-8859-x 的一部分,但不是 ´ 和 `。有趣的是,当我将数据写入文件时,它再次正确显示。
  • 那么,您是否按照建议尝试了iconv(dataframe [, 1], from = "UTF-8", to = "latin1")?无法访问实际数据很难调试...
  • 天哪!这样可行!我不知道我怎么能忽略这一点!非常感谢!!!
  • 好吧,也没用。当我这样做时,一些条目会变成“NA”......

标签: mysql r encoding utf-8 iso-8859-1


【解决方案1】:

这样做:

con <- dbConnect(MySQL(), user="root", password="****", dbname="twitterdata", host="localhost", encoding = "latin1")

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 2018-10-17
    • 2016-04-10
    • 2012-08-22
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多