首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R使用read.delim读取utf-8编码的中文文件时出错

R使用read.delim读取utf-8编码的中文文件时出错
EN

Stack Overflow用户
提问于 2013-11-03 23:54:53
回答 1查看 2.6K关注 0票数 0

我有一个utf-8编码文件test.txt,其中的值是用分隔符分隔的

代码语言:javascript
复制
a   b   c
小   小   大
小   大   小
大   小   小

我使用命令read来读取数据

代码语言:javascript
复制
Sys.setlocale("LC_CTYPE", "Chinese")
data <- read.delim("test.txt",encoding="UTF-8")

但数据被读取为具有输出的数据帧

代码语言:javascript
复制
[1] X.U.FEFF.a b          c         
<0 rows> (or 0-length row.names)

我的系统是windows 7

如何正确读取数据?

EN

回答 1

Stack Overflow用户

发布于 2013-11-04 00:12:06

我刚试过read.csv,它工作得很好。我测试了你的代码,read.delim也可以开箱即用。

代码语言:javascript
复制
> a <- read.csv('/tmp/test.txt', sep="\t", quote="", stringsAsFactors=FALSE)
> str(a)
'data.frame':   3 obs. of  3 variables:
 $ a: chr  "小" "小" "大"
 $ b: chr  "小" "大" "小"
 $ c: chr  "大" "小" "小"
> a
   a  b  c
1 小 小 大
2 小 大 小
3 大 小 小

> data <- read.delim("/tmp/test.txt", encoding="utf-8")
> data
   a  b  c
1 小 小 大
2 小 大 小
3 大 小 小

然后我尝试了您的Sys.setlocale命令,但它对我无效,这表明在我测试将地区设置为德语之后,该命令本身是无效的。

代码语言:javascript
复制
# ?Sys.setlocale:
# "Attempts to set an invalid locale are ignored. There may or may not be a warning, depending on the OS."
> Sys.setlocale("LC_CTYPE", "Chinese")
[1] ""
Warning message:
In Sys.setlocale("LC_CTYPE", "Chinese") :
  OS reports request to set locale to "Chinese" cannot be honored
> Sys.setlocale("LC_TIME", "de_DE")  # Mac OS X, in UTF-8
[1] "de_DE"
> Sys.getlocale()
[1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/de_DE/en_US.UTF-8"

要成功将区域设置设置为中文,您可以尝试执行以下操作(Cited From Here):

代码语言:javascript
复制
Sys.setlocale("LC_ALL","zh_CN.utf-8")
> Sys.getlocale()
[1] "zh_CN.utf-8/zh_CN.utf-8/zh_CN.utf-8/C/zh_CN.utf-8/en_US.UTF-8"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19754826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档