【发布时间】:2015-02-05 08:30:48
【问题描述】:
我似乎无法使编码正常工作。并且尝试重现该问题会导致更令人惊讶的结果:
- 真正的问题
我正在阅读的文件的语言文本包含“ā、č、š、ū”等字符。
如names <- read.table("file", sep = "|", header = T)
通过调用View(names),所有特殊字符都按原样显示:
但是,通过简单地调用names R 返回:
当我尝试写入文件时,会出现几乎相同的乱码。这就是我要解决的问题。带有损坏字符的文件不会剪切它。
- 试图重现:
a <- c("Šrilanka", "Ķīna", "Kanāda", "Ēģipte")
write.csv(a, "test.csv", row.names = F)
b <- read.table("test.csv", header = T)
这会产生非常令人惊讶的结果,因为生成的文件 test.csv 是完全可读的,但是当我将它读回 R 时,我遇到了相反的问题。
调用View(b) 会产生:
虽然简单地调用 b 会产生:
完美的文字。
所以..回到问题的本质。我已将 R 中的默认文本编码设置为“UTF-8”。我尝试过使用 stringi 包,结果好坏参半:
> stri_enc_mark(names$city)
[1] "native" "native" "native" "native" "ASCII" "native"
强制编码:
> stri_encode(names$city, "ASCII", "UTF-8")
[1] "Balo��i" "R��ga" "Kr��slava" "BAB��TES NOV." "Jelgava" "R��ga"
我怀疑最初读取文件时会出现问题。然而,使用View(names) 会产生预期的结果,所有特殊符号都在位,这让我失去了平衡。
【问题讨论】: