我正在尝试阅读包含用挪威语编写的问卷数据的CSV文件。所以这个文件包含字母ÆØÅ,但是R似乎不能很好地处理这些字母,它们都显示为问号。
我用它来读取数据:
data <- read.csv2("Responser - Vasket - 20.06.2013.csv")
我是否应该使用任何选项让R知道我有特殊字符?
我在Windows 7上使用Rstudio。
答案 0 :(得分:3)
您需要将fileEncoding
参数指定为read.csv2
(不以及(?)encoding
)。
在你到达R之前,最好使用文本编辑器检查文件的编码。例如,如果在Notepad ++中打开文件,则“编码”菜单允许您查看和更改字符编码。在TextPad中,您可以从“另存为...”对话框中更改编码。大多数文本编辑器都有这样的功能。
这是您需要传递给fileEncoding
的值;如果文件尚未声明,则不能将文件声明为UTF-16。这就是你发出警告的原因。
答案 1 :(得分:1)
鉴于我的R版本和设置,这对我有用:
在记事本中,我检查csv文件是否使用'Encoding:ANSI'保存
在RStudio中:工具/选项/默认文本编码:ISO8859-1
我尝试使用这样的虚拟数据:
dd <- data.frame(area = c("øø", "åå", "ææ"), site = c("åå", "ææ", "øø"))
write.csv2(x = dd, file = "åæø.csv", row.names = FALSE)
dd2 <- read.csv2(file = "åæø.csv")
all.equal(dd, dd2)
sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=Norwegian (Bokmål)_Norway.1252 LC_CTYPE=Norwegian (Bokmål)_Norway.1252
[3] LC_MONETARY=Norwegian (Bokmål)_Norway.1252 LC_NUMERIC=C
[5] LC_TIME=Norwegian (Bokmål)_Norway.1252
getOption("encoding")
[1] "native.enc"
编辑以下来自@ OleHenrikSkogstrøm的评论8月7日7:57
评论“如果我...在Rstudio中使用视图命令,这个错误仍然存在”和“如果我只是输入它并将结果放在控制台中,它就起作用”来自@OleHenrikSkogstrøm透露给出的信息在原帖中还不够。
我上面的回答View
- ing' RStudio中的对象错误地显示æøå。从控制台运行View(dd)
(dd
,查看上面的虚拟数据)时,以及在“工作区窗格”中单击对象时,æøå在数据中显示为“黑钻石问号”观众。
另一方面,如果仅使用RGui,而不使用RStudio,View(dd)
会在数据查看器中正确显示字符。
因此,与将æøå读入R中的问题不同,这似乎是View
在RStudio中的问题。另见this post on RStudio support。
答案 2 :(得分:0)
Hei Henrik,当csv文件(由Excel制作)包含ØÆÅ时,我遇到同样的问题,在R中打开它们会将挪威字母显示为黑色菱形,中间带有白色问号。对我来说问题肯定是基于编码的,但我无法成功使用“encoding”或“fileEncoding”来正确打开它们。
我通过在记事本中打开csv然后将其转换为文本文件并将编码从“ANSI”更改为“UTF-8”来解决了我系统上的问题。参见示例。
以下链接包含由excel创建的两个csv文件,一个以MS-DOS编码编码(名称为CSV MSDOS),另一个以“逗号分隔”(Names CSV)样式编码
https://drive.google.com/folderview?id=0BzoGQiFdDwiNNm02UnNLVVNja3c&usp=sharing
在记事本中打开它们应该显示MS-DOS版本的字母表示不正确(因此可以忽略),而“逗号分隔”版本具有正确的表示形式。将“Names CSV”文件保存为编码为“UTF-8”的文本文件,并将其命名为“Names CSV UTF8”。将R中的工作目录设置为文件所在的文件夹,然后运行以下代码。
test1 <- read.csv2("Names CSV.csv")
test2 <- read.csv2("Names CSV UTF8.txt")
test1应显示带有问号test2的黑色菱形,应正确显示名称。
我认为以前的答案可能没有用,因为表是由R创建的,R设置字符编码,我遇到了问题,我相信你也是一个不同的系统软件设置编码。
如果你有很多文件要处理,这个解决方案不是很有用,但它至少不是一个开始。