我在编写将内容写入文件方面遇到了麻烦。 这是一个非常简单的案例,它已经让我头晕了几天。
我有一个名为teste.R
的R文件,其代码如下:
teste <- function(fileContent, fileName) {
fileConn<-file(fileName)
writeLines(fileContent, fileConn)
close(fileConn)
}
page <- ''
page <- paste(page, 'ãõéç')
teste(page, 'file_.html')
好吧,我以两种不同的方式在R-Studio上运行这段代码:
1 - 我只是在控制台上运行teste
功能。
2 - 我在控制台上运行以下命令:
source('F:/Dropbox/TESE/Projeto/AnaliseSAA/teste.R')
在这两种情况下,我都会在文件中获得相同的内容:ãõéç 到目前为止一切都很好。但是,如果我在浏览器上打开文件,我会得到两个不同的输出:
1-ãõéç
2-ÃÃÃéç
所有这一切都是因为我正在创建一个HTML页面来显示我在R中进行的分析,并且这些页面看起来很糟糕。
感谢。
答案 0 :(得分:1)
如果您希望创建HTML文件,最好使用现有工具(如RStudio的htmltools
包),或使用markdown
包。因为如果你不包括标准标签,包括声明编码的标签,那你就会感到很痛苦。
这是一个可能适合您的建议:
库(htmltools)
teste <- function(fileContent, fileName) {
content <- tags$html(HTML('<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"></head>'),
tags$body(fileContent))
outfile <- file(description = fileName, open = "w", encoding = "UTF-8")
capture.output(content, file = outfile)
close(outfile)
}
page <- ''
page <- paste(page, 'ãõéç')
teste(page, 'file_.html')
修改强>
另一种方法是用这样的函数替换加重的字符(包中可能有一个预先存在的字符,但我不知道一个):
repl.accent <- function(x) {
accent <- c("À", "à", "Â", "â", "Ç", "ç", "È", "è", "É", "é", "Ê", "ê", "Ë", "ë",
"Î", "î", "Ï", "ï", "Ñ", "ñ", "Ô", "ô", "Ö", "ö", "Ù", "ù", "Û", "û",
"Ü", "ü","'")
repl <- c("À", "à", "Â", "â", "Ç", "ç", "È",
"è", "É", "é", "Ê", "ê", "Ë", "ë",
"Î", "î", "Ï", "ï", "Ñ", "ñ", "Ô",
"ô", "Ö", "ö", "Ù", "ù", "Û", "û",
"Ü", "ü", "'")
stringi::stri_replace_all_fixed(str = x, pattern = accent, replacement = repl, vectorize_all = FALSE)
}
repl.accent('éçà')
[1] "éçà"