【问题标题】:Special characters when importing from BigQuery to R从 BigQuery 导入到 R 时的特殊字符
【发布时间】:2019-01-07 16:51:36
【问题描述】:

我有一个脚本,用于删除一些推文并将结果保存到 Google BigQuery。当我看到存储的数据时,➕、‍♂️、Ñ、áéíóú 等特殊字符会正确显示,但是当我尝试再次将数据导入 R 时,它们会被一些奇怪的字符替换。这是一个例子。

# Create df

id_tweet <- 1023985670224785408
tweet <- "◉ Neuroeducación y entornos digitales de aprendizaje: un paso obligado para educadores, pedagogos y psicólogos"
descripcion <- "Desde las alturas se ve todo de otra manera... ️ ➕ ‍♂️"

data <- data.frame(id, tweet, description)

# Save to Google BQ

library(bigrquery)

insert_upload_job("project-id", "dataset", "table", data , write_disposition = "WRITE_APPEND")

#Load from Gooble BQ

sql <- paste("SELECT *", "FROM", "`project-id.dataset.table`")
data <- query_exec(sql, project = "project-id", use_legacy_sql = FALSE)

我的输出如下:

> data
               id_tweet
283 1023985670224785408
                                                                                                                                         tweet
283 ◉ Neuroeducación y entornos digitales de aprendizaje: un paso obligado para educadores, pedagogos y psicólogos
                                                                                        descripcion
283 Desde las alturas se ve todo de otra manera... ï¿½ï¿½ï¸ âž• ��<U+200D>â™‚ï¸ ï¿½ï¿½ ��

我想要的是保持原来的格式。

我该怎么办?

谢谢,

【问题讨论】:

  • 我可以在最后尝试这段代码,一切对我来说都很好。我在id_tweetdescripcion 的数据框构造中更改了iddespcription,但我认为这是您的问题中的错字。你可以在执行这个命令data &lt;- data.frame(id, tweet, description)之后输出数据吗?还要检查 BQ 表的架构

标签: r twitter google-bigquery


【解决方案1】:

我测试了一些可能有帮助的东西。

首先,我保存了空白的 R 脚本并确保它采用 UTF-8 编码:文件 -> 使用编码保存 -> UTF-8。然后将问题中的特殊字符用双引号保存为 .csv(即"➕, ‍♂️, Ñ, áéíóú")。然后用fileEncoding = "UTF-8"读入csv,即:

test <- read.csv("test.csv", fileEncoding = "UTF-8", header=FALSE, stringsAsFactors = FALSE)

在 R Studio 中,test 返回:

# > test
# V1
# 1 \u2795, ‍♂️, Ñ, áéíóú

所以除了 ➕ 之外的所有东西都在 R Studio 中很好地显示。然而,很多字符,即使是常见的字符,如换行符和制表符等,在 RStudio 中都会有趣地显示,但通常是在写入文件时。这些没有什么不同。

写入 csv 时(仅使用 write.csv(test, 'test2.csv', row.names=FALSE)),它会像在原始 csv 中一样完美显示(即在崇高文本中打开时)

毕竟,我建议确保您的编码是 UTF-8,并可能尝试将 BQ 输出保存为 csv(如果可能?)并检查它以查看问题是来自 BQ 还是 R。如果它正确地来自 BQ,那么它应该只是更改 RStudio 中的编码的问题。但是,如果它没有按预期从 BQ 中出来,那么我建议您需要将 BQ 中的数据类型更改为 UTF-8

【讨论】:

  • 谢谢!但我一直有同样的问题。我的解决方案是将表格保存在 Google 表格中。我必须手动完成,但生活并不总是美好的......
  • @FrancescPonsÁlvarez 我猜你现在正在从Google Sheet 读取数据,它解决了你的问题。你能找到造成这种情况的原因吗?如果它在Google Sheet 上工作但不在BQ 上,我建议在从BQ table 加载时检查编码配置
【解决方案2】:

6 个月后,我终于设法解决了这个问题。我没有使用 query_exec 函数,而是使用了同一个包中的 bq_table_download。这个函数解决了这个问题。

【讨论】:

    猜你喜欢
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2021-08-09
    • 2019-12-02
    • 1970-01-01
    相关资源
    最近更新 更多