如何保持 .rtf 的编码

发布于 2025-01-15 05:40:10 字数 3669 浏览 3 评论 0原文

我是巴西人,这是我第一次在 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 diversificao                                

“?”应该是“â”、“í”、“ã”和“çã”。

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 = "\\.rtf
quot;)

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 diversificao                                

"?" should be 'â', 'í', 'ã' and "çã".

ps: I also tried to put a list as string with paste(y, collapse=''), but the '?' still appearing,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奢望 2025-01-22 05:40:10

striprtf::read_rtf 使用 readLines() 读取实际文件。

readLines() 有一个 encoding 参数。

最有可能的是像 striprtf::read_rtf(...,encoding = "latin1") 这样的东西适合你,因为“latin1”适用于大多数西欧语言,例如葡萄牙语。

striprtf::read_rtf is using readLines() to read the actual file.

readLines() has an encoding 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文