使用UTF包,我可以将data.frame写入xlsx文件,同时将特殊字符保留在xlsx文件中,因为数据是以UTF8编码保存的(在writexl上)。当我从R控制台运行我的R脚本时,这是有效的。

但是,当我安排一个cronjob运行完全相同的R脚本时,xlsx文件是使用不同的编码保存的,因此不会显示特殊字符。有没有办法改变cronjob中的编码。

我找不到任何有关如何使用cronR包(https://github.com/bnosac/cronR)或writexl包添加与编码相关的参数的文档,也找不到有关如何使用以下任何行在R脚本中更改编码的文档:
options(encoding = "UTF-8")或者将字符列的编码更改为UTF-8:
data_table <- data_table %>% mutate_if(is.character,
list(~enc2utf8(.)))在将数据帧写入xlsx之前
writexl::write_xlsx(data_table, "filename.xlsx")有人知道如何在运行cronjob时将编码更改为UTF-8,以便在保存的xlsx文件中显示特殊字符吗?
发布于 2021-08-11 06:23:38
我遇到了a solution by TDaw,它解决了这个问题:
事实证明,这些设置不能在R脚本中指定,因为Cron会覆盖它们。解决方案是在cron中直接通过终端执行此操作。如果在添加cron作业后使用cronR编辑crontab,这将是最简单的。
在终端中输入crontab -e进入crontab。crontab中的类型将允许您插入或编辑i。在我输入的文件的顶部:
LANGUAGE=gb
LC_CTYPE=en_GB.UTF-8
PYTHONIOENCODING=utf8这将停止使用POSIX作为其语言的cron。按Esc键和:wq键保存并退出。如果您在Rstudio/CronR中编辑cron作业,它们将位于编辑的上方,并且不会使用这些设置,因此crontab必须相应地进行编辑。
https://stackoverflow.com/questions/68725580
复制相似问题