【问题标题】:file encoding changes when appending附加时文件编码更改
【发布时间】:2017-12-15 05:54:35
【问题描述】:

我想使用write.table 编写一个文件并将UTF-8 用作encoding。只要我不附加到这个文件,它就可以工作。当我这样做时,encoding 更改为 ANSI。为什么会这样?我该如何预防?

这是一个小示例代码:

options("encoding" = "UTF-8")
write.table("Hello World in UTF-8", file = "C:/TEMP/test.txt", col.names = FALSE, row.names = FALSE, sep = "", quote = FALSE)
write.table("Now it changes to ANSI", file = "C:/TEMP/test.txt", col.names = FALSE, row.names = FALSE, sep = "", quote = FALSE, append = TRUE) 

我也试过直接在write.table中使用fileEncoding = "UTF-8",结果还是一样。

【问题讨论】:

  • 你怎么知道encoding已经变成ANSI?对我来说,它工作得很好。该文件仍在UTF-8
  • 我在 Notepad++ 中打开文件,它告诉我encoding
  • 我也用过 Notepad++,它显示了UTF-8 编码。
  • 好的。似乎是 NP++ 而不是 R 的问题。如果我关闭文件并再次打开它,它也会告诉我UTF-8

标签: r encoding utf-8


【解决方案1】:

就个人而言,我不喜欢依赖全局option。使用fileEncoding 参数到write.table 可以保护您的代码免受全局option 的任何更改。因此该行应该是:

write.table("Now it changes to ANSI", file = "C:/TEMP/test.txt", col.names = FALSE, row.names = FALSE, sep = "", quote = FALSE, append = TRUE, fileEncoding = "UTF-8") 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多