我正在构建自己的软件包,但由于我的软件包中的函数具有非英文(非ASCII)字符而反复遇到编码问题。
本质上,韩语字符是我软件包中许多函数的一部分。以下是一个示例函数:
library(rvest)
sampleprob <- function(url) {
# sample url: "http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20200330003851"
result <- grepl("연결재무제표 주석", html_text(read_html(url)))
return(result)
}
然而,在安装该软件包时我遇到了编码问题。
我创建了一个样例软件包(https://github.com/hyk0127/KorEncod/),其中只包含一个函数(如上所示),并将其上传到我的 GitHub 页面进行可重复性的演示。我运行以下代码进行安装:
library(devtools)
install_github("hyk0127/KorEncod")
以下是我看到的错误信息:
Error : (converted from warning) unable to re-encode 'hello.R' line 7
ERROR: unable to collate and parse R files for package 'KorEncod'
* removing 'C:/Users/myname/Documents/R/win-library/3.6/KorEncod'
* restoring previous 'C:/Users/myname/Documents/R/win-library/3.6/KorEncod'
Error: Failed to install 'KorEncod' from GitHub:
(converted from warning) installation of package ‘C:/Users/myname/AppData/Local/Temp/RtmpmS5ZOe/file48c02d205c44/KorEncod_0.1.0.tar.gz’ had non-zero exit status
有关第7行
的错误消息是指函数中的韩文字符。
可以使用tar.gz文件在本地安装软件包,但是由于以破碎编码识别韩文字符,所以函数无法按预期运行。
这不可能是有人尝试构建具有非英语(或非ASCII)字符的软件包的第一次,但我却找不到解决方案。非常感谢任何帮助。
我认为相关的一些信息如下:
当前的DESCRIPTION
文件指定“编码:UTF-8”。
我使用了sys.setlocale
将区域设置为韩文,然后又改回来,但没有用。
我还指定了@encoding UTF-8
,但同样没有用。
我目前使用的是Windows操作系统,管理员语言设置为英语。我尝试过在另一台Windows操作系统的笔记本电脑上,管理员语言设置为韩语,但出现了同样的问题。
devtools::session_info()
中的collate
和ctype
很重要(两者都源自Sys.getlocale()
,在我看来)。不幸的是,在Windows中无法像预期的那样使用Sys.setlocale(category = "LC_CTYPE" , locale=".65001")
,这与Sys.setlocale(category = "LC_COLLATE" , locale=".65001")
不同...这是R中Windows与UTF-8之间的老化不兼容性。 - JosefZ