繁体   English   中英

从 BigQuery 导入到 R 时的特殊字符

[英]Special characters when importing from BigQuery to R

我有一个脚本可以删除一些推文并将结果保存到 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>â™‚ï¸ ï¿½ï¿½ ��

我想要的是保留原始格式。

我该怎么办?

谢谢,

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

首先,我保存了空白的 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)

6个月后,我终于设法解决了这个问题。 代替使用函数query_exec我用bq_table_download从同一个包来代替。 这个功能解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM