为什么R读UTF-8标题为文本?

Rod*_*igo 8 csv byte-order-mark r utf-8 file-encodings

我将Excel表保存为文本(*.txt).不幸的是,Excel不允许我选择编码.所以我需要在记事本(打开为ANSI)中打开它并将其保存为UTF-8.然后,当我在R中读到它时:

data <- read.csv("my_file.txt",header=TRUE,sep="\t",encoding="UTF-8")
Run Code Online (Sandbox Code Playgroud)

它显示以"XUFEFF."开头的第一列的名称.我知道这些是保留的字节,告诉任何程序该文件是UTF-8格式.所以它不应该显示为文本!这是一个错误吗?或者我错过了一些选择?提前致谢!

zwo*_*wol 12

所以我打算给你关于如何手动打开文件并检查并丢弃BOM的说明,但后来我注意到了这个(in ?file):

从R 3.0.0开始,编码"UTF-8-BOM"被接受并将删除字节顺序标记(如果存在)(通常用于Microsoft应用程序生成的文件和网页).

这意味着如果你有一个足够新的R解释器,

read.csv("my_file.txt", fileEncoding="UTF-8-BOM", ...other args...)
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事.

  • 嗯几乎在那里.现在是"XUFEFF".成了"ï.." (2认同)
  • 看起来该文件实际上不是 UTF-8。有什么方法可以向我们展示文件第一行的十六进制转储?(在大多数 Unix 系统上,`head -1 my_file.txt | hexdump -C` 会给你一个不错的十六进制转储,但我不知道 Windows 等价物。) (2认同)
  • 是的,我有 R 3.0.1。我下载了 Notepad++,它让我可以选择使用和不使用 BOM 进行保存。似乎 R 无法处理 BOM。 (2认同)