【发布时间】:2021-01-25 23:15:41
【问题描述】:
我正在尝试为泰语制作大量 Anki 抽认卡,因此我使用 R 进行了一些网络抓取,以从网站(字典)中提取音译元素。在控制台中打印时一切看起来都很好,但是当我尝试将音译写入文本文件时,编码发生了变化,并且我失去了音标。使用Encoding() 显示大多数条目是“UTF-8”,这应该没问题,但有些条目被标记为“未知”。您可以从我的GitHub 下载 HTML 文件,下面是我的代码,用于导入和提取文本。
# Install appropriate library
install.packages("rvest")
library(rvest)
# Read in page to local variable
page <- read_html("Thai to English dictionary, translation and transliteration.html")
# Filter for specific tags
translit <- page %>% html_nodes(".tlit-line") %>% html_text()
write(translit, file = 'translit.txt')
【问题讨论】:
-
您使用的是什么操作系统?不同的操作系统默认使用不同的编码 您的系统区域设置是什么?写出内容以验证编码后如何读取文件?
-
我使用的是 Windows 10。RStudio 告诉我系统默认值为 ISO-8859-1。我使用 RStudio 的控制台在写入文件之前查看所有内容,但我使用记事本在写入后查看文件。
-
Windows 在写入文件等时默认使用 ISO-8859-1(又名“latin1”)编码。给定文件使用的编码通常不存储在文件本身中,因此如果不是latin1,则需要在读写时指定它。
-
仍然没有骰子。在读取时指定编码没有任何效果。使用上面我使用的
write()函数,没有encoding参数。如果我尝试在导入时使用“latin1”,则文本不可读。当我将 HTML 文件读取为“UTF-8”或“UTF-16”时,它在控制台中正确显示,但仍无法正确写入。 -
write()没有编码选项,但您可以在连接上设置一个。write(translit, file("translit.txt", encoding="utf8")); readLines(file("translit.txt", encoding="utf8"))呢?