R Markdown source外部R脚本时德语变音符号乱码问题
异常产生原因
- R Markdown内置代码块由knitr渲染时,会直接沿用文档声明的UTF-8编码解析块内文本,所以直接写入的德语变音符号可以被正常识别输出。
- 调用
source()加载外部.R脚本时,R不会默认使用UTF-8编码读取外部文件:在Windows等系统下,R会自动匹配系统当前区域设置对应的本地编码(如中文环境默认GBK、老版本西欧语言环境默认Latin-1),编码解析不匹配就会把变音符号识别为乱码,最终渲染时显示为蓝色方块。
配置解决方法
- 单次加载脚本时显式指定编码,不需要改动原有脚本内容,直接修改
source()调用参数即可,这是适配性最高的方案:
# 替换为你自己的外部脚本实际路径 source("通用工具脚本.R", encoding = "UTF-8")
- 如果文档中需要多次调用
source()加载外部脚本,可以在文档最开头的初始化代码块中全局设置默认文件编码,后续调用不需要重复添加encoding参数:
# 放在所有source()调用之前执行 options(encoding = "UTF-8")
- 前置校验:保存外部.R脚本时,确认编辑器选择的保存编码为无BOM的UTF-8,不要存为带BOM的UTF-8、GBK、Latin-1等其他编码,避免编码不匹配问题。
内容的提问来源于stack exchange,提问作者TarJae
相关产品推荐
相关产品推荐

