读ÆØÅ等特殊字符到R(Rstudio)

时间:2013-06-24 09:11:54

标签: r csv special-characters

我正在尝试阅读包含用挪威语编写的问卷数据的CSV文件。所以这个文件包含字母ÆØÅ,但是R似乎不能很好地处理这些字母,它们都显示为问号。

我用它来读取数据:

data <- read.csv2("Responser - Vasket - 20.06.2013.csv")

我是否应该使用任何选项让R知道我有特殊字符?

我在Windows 7上使用Rstudio。

3 个答案:

答案 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透露给出的信息在原帖中还不够。

我上面的回答适用于实际问过的原始问题:将特殊字符读入R.什么无法正常工作,哪些 OP中指定的是'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设置字符编码,我遇到了问题,我相信你也是一个不同的系统软件设置编码。

如果你有很多文件要处理,这个解决方案不是很有用,但它至少不是一个开始。