如何保持 .rtf 的编码
我是巴西人,这是我第一次在 R 中处理文本。
我需要将 .rtf 转换为 .txt 文件。
由于我是巴西人,所以我说葡萄牙语,并且需要这些字符:ã、õ、í、ç、ô 等。
示例
text <- "o de garantias adequadas e suficientes do cooperado ou de seus garantidores e a observância das demais normas regulamentares oficiais e internas do Sistema, e com respeito aos princípios da boa gestão, da seletividade, da diversificação"
我的原始代码:
files <- list.files("estatutos/rtf/", pattern = "\\.rtf$")
for (file in 1:length(files)) {
x <- files[file]
# read RTF into R
y <- striprtf::read_rtf(paste("estatutos/rtf/", x, "", sep = ""))
# strip RTF encoding
z <- striprtf::strip_rtf(y) |>
iconv(from = "UTF-8", to = "latin1")
# Write each to a TXT file by its original name
write(z, paste("estatutos/txt/", x, ".txt", sep = ""))
# Tell about progress
cat("Processing file", x, " - ", file, "of", length(files), "\n")
}
rm(files, x, y, z, file, i)
我的问题:
当我阅读 .rtf 时,我有一个这样的列表
[523] "o de garantias adequadas e suficientes do cooperado ou de seus garantidores e a observ"
[524] "â"
[525] "ncia das demais normas regulamentares oficiais e internas do Sistema, e com respeito aos princ"
[526] "í"
[527] "pios da boa gest"
[528] "ã"
[529] "o, da seletividade, da diversifica"
[530] ""
[531] "o de riscos e da seguran"
[532] "ç"
[533] "a operacional."
如何将其放入一个文本中?
我尝试使用 striprtf::strip_rtf()
,并且我有全文,但也有:
[1] o de garantias adequadas e suficientes do cooperado ou de seus garantidores e a observ?ncia das demais normas regulamentares oficiais e internas do Sistema, e com respeito aos princ?pios da boa gest?o, da seletividade, da diversificao
“?”应该是“â”、“í”、“ã”和“çã”。
ps:我还尝试使用 paste(y,collapse='')
将列表作为字符串,但是 '?'仍然出现,
I'm Brazilian and this is my first time working with text in R.
I need to convert .rtf to .txt files.
Since I'm Brazilian, I speak portuguese and I need these characters: ã, õ, í, ç, ô, and others.
example
text <- "o de garantias adequadas e suficientes do cooperado ou de seus garantidores e a observância das demais normas regulamentares oficiais e internas do Sistema, e com respeito aos princípios da boa gestão, da seletividade, da diversificação"
My original code:
files <- list.files("estatutos/rtf/", pattern = "\\.rtfquot;)
for (file in 1:length(files)) {
x <- files[file]
# read RTF into R
y <- striprtf::read_rtf(paste("estatutos/rtf/", x, "", sep = ""))
# strip RTF encoding
z <- striprtf::strip_rtf(y) |>
iconv(from = "UTF-8", to = "latin1")
# Write each to a TXT file by its original name
write(z, paste("estatutos/txt/", x, ".txt", sep = ""))
# Tell about progress
cat("Processing file", x, " - ", file, "of", length(files), "\n")
}
rm(files, x, y, z, file, i)
My problem:
When I read the .rtf I had a list like this
[523] "o de garantias adequadas e suficientes do cooperado ou de seus garantidores e a observ"
[524] "â"
[525] "ncia das demais normas regulamentares oficiais e internas do Sistema, e com respeito aos princ"
[526] "í"
[527] "pios da boa gest"
[528] "ã"
[529] "o, da seletividade, da diversifica"
[530] ""
[531] "o de riscos e da seguran"
[532] "ç"
[533] "a operacional."
How can I put this in one text?
I tried to use striprtf::strip_rtf()
, and I had the full text, but also:
[1] o de garantias adequadas e suficientes do cooperado ou de seus garantidores e a observ?ncia das demais normas regulamentares oficiais e internas do Sistema, e com respeito aos princ?pios da boa gest?o, da seletividade, da diversificao
"?" should be 'â', 'í', 'ã' and "çã".
ps: I also tried to put a list as string with paste(y, collapse='')
, but the '?' still appearing,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
striprtf::read_rtf
使用readLines()
读取实际文件。readLines()
有一个encoding
参数。最有可能的是像
striprtf::read_rtf(...,encoding = "latin1")
这样的东西适合你,因为“latin1”适用于大多数西欧语言,例如葡萄牙语。striprtf::read_rtf
is usingreadLines()
to read the actual file.readLines()
has anencoding
argument.Most likely something like
striprtf::read_rtf(..., encoding = "latin1")
would work for you, as "latin1" work for most western european languages, such as portuguese.