【问题标题】:R fails to encode romainan characters with UTF-8 correctlyR 无法正确使用 UTF-8 编码罗马字符
【发布时间】:2019-04-03 13:25:05
【问题描述】:

我正在处理一些位置名称使用本地字符的位置数据集。大多数字符都被正确查看,但我遇到了一些罗马尼亚字符的问题,例如“ș”。

我尝试将我的 Windows 10 64 位系统区域设置更改为使用 UTF-8 编码,但这并没有解决问题。

可以在此处找到一个示例文件进行测试: https://drive.google.com/file/d/1T7QQQ7G_dA_rXD9Ewf51uuQ6CUkscjP_/view?usp=sharing

这一行导入数据:

df <- read.delim("R_Encode_Issue.csv", header=TRUE, sep=",", encoding = "UTF-8", colClasses=c("character","character","character"))

> df
  region country         chapter
1 Europe Moldova Chi<U+0219>inau

这会在控制台和查看器中将位置章节显示为“Chiinau”(Stackoverflow 甚至无法显示:D)。

如果我将 data_table 转换为 tibble:

df2 <- as_tibble(df)

> df2
# A tibble: 1 x 3
  region country chapter 
  <chr>  <chr>   <chr>   
1 Europe Moldova Chișinău

控制台将位置章节显示为“基希讷乌”,而查看器显示为“基希讷乌”。

我将数据写入 .csv 文件:

write.csv(df2, file = "R_Encode_Out.csv",row.names=FALSE, na="", fileEncoding = "UTF-8") 

并且位置章节在写入文件中写为“Chiinau”。

R 版本:

platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          5.3                         
year           2019                        
month          03                          
day            11                          
svn rev        76217                       
language       R                           
version.string R version 3.5.3 (2019-03-11)
nickname       Great Truth     

RStudio 版本:

$mode
[1] "desktop"

$version
[1] ‘1.1.463’

当我使用 UTF-8 作为导入和导出的编码时,我希望查看器或至少写入的文件能够正确显示字符。但情况是字符导出不正确。

关于我可以做些什么来纠正这个问题的任何见解?

【问题讨论】:

  • 尝试 write_csv() 来自包 readr 而不是 R 的内置 write.csv()

标签: r encoding utf-8 character-encoding


【解决方案1】:

尝试使用与基本 R 不同的导入和导出函数。我在导出的文件中使用 readr 使其工作(似乎查看器确实将其显示为 Chi&lt;U+0219&gt;inau。导出的文件在记事本中正确打开,并且如果我指定它具有 UTF-8 编码,则在 Excel 中。

library(readr)
df <- read_csv("C:/Users/Andrew/Downloads/R_Encode_Issue.csv", locale = locale(encoding = "UTF-8"))

df
# A tibble: 1 x 3
  region country chapter 
  <chr>  <chr>   <chr>   
1 Europe Moldova Chișinău

write_csv(df, "C:/Users/Andrew/Desktop/R_Encode_Issue.csv")

【讨论】:

  • 嗨,安德鲁,阅读器导出功能似乎可以解决问题!感谢您的意见:)
猜你喜欢
  • 1970-01-01
  • 2016-01-11
  • 2011-08-09
  • 2018-10-25
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
  • 2018-09-01
相关资源
最近更新 更多