【问题标题】:correct file encoding after loading data from database into R将数据从数据库加载到 R 后正确的文件编码
【发布时间】:2019-09-12 00:39:33
【问题描述】:

我正在学习如何将数据从数据库导入 R。 我使用了以下代码:

library("RMySQL")
library("dbConnect")

con <- dbConnect(RMySQL::MySQL(),dbname = "database_name",host = "xyz.amazonaws.com",user="xxxxxxx",password="ghujkfgd")
dbListTables(con)

df <- "CALL get_transactions('all');"
df <- dbGetQuery(con, df)

但是数据有一些编码问题:

左侧列是我从数据库导出的列,右侧列是原始列。有人能告诉我如何将带有重音符号或特殊字符的数据从数据库读取到 R.TIA。

【问题讨论】:

  • 数据看起来好像是用 Latin1 编码的,但是从您发布的内容中并不清楚您现在拥有什么。例如,在第一个email 值中,&lt;ed&gt; 是以丑陋的格式打印的单个字符,还是 4 个字符?您正在读取的数据库中的内容是什么?

标签: mysql r database utf-8


【解决方案1】:

我已经使用以下代码解决了这个问题:

library(RMySQL)
library(dbConnect)

con <- dbConnect(RMySQL::MySQL(),dbname = "database_name",host = "xyz.amazonaws.com",user="xxxxxxx",password="ghujkfgd"
dbListTables(con)

df <- "CALL get_transactions('all');"
rs <- dbSendQuery(con, 'set character set "utf8"')
rs <- dbSendQuery(con, df)
data <- fetch(rs, n= -1)


dbDisconnect(con)

【讨论】:

    【解决方案2】:

    edf3c1e1f1faíóÁáñúCHARACTER SET latin1 中的十六进制代码。

    可能有什么东西在期待 UTF-8CHARACTER SET utf8utf8mb4)并在 ed 上发声,因此说 Roc&lt;ed&gt;ghf 而不是 Rocíghf

    我在R上的笔记说

    Tool -> Global Options -> Code -> Saving and put UTF-8
    
    rs <- dbSendQuery(con, 'set character set "utf8"')
    rs <- dbSendQuery(con, 'SET NAMES utf8')
    

    options(encoding = "UTF-8") 位于调用包的主脚本顶部。

    但是,这可能恰好是倒退的,您可能需要使用latin1 而不是utf8

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2019-02-23
      • 1970-01-01
      相关资源
      最近更新 更多