使用posterdown编译海报时pandoc报错:无效UTF-8流
排查posterdown编译时的UTF-8解码错误
此前使用posterdown编译海报一切正常,但近期编译失败。尝试移除新增文本排查问题无效,报错信息显示pandoc无法解码字节'\x80',提示无效UTF-8流,文档转换失败。海报仅使用了'%'特殊字符,相关信息如下:
报错信息
pandoc: Cannot decode byte '\x80': Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 stream Error: pandoc document conversion failed with error 1 Closing browser Cleaning browser working directory Execution halted
.Rmd开头代码
--- title: <div style='margin:50px'> Our title</div> font_family: Calibri poster_height: "47.24in" poster_width: "35.43in" author: - name: Author1 Name - name: Author2 Name - name: Author3 Name column_numbers: 2 #logoleft_name: ./figures/phase.png title_textsize: "78px" author_textsize: "32px" affiliation_textsize: "15px" body_textsize: "40px" output: posterdown::posterdown_html: self_contained: true knit: pagedown::chrome_print bibliography: packages.bib --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE, encoding = 'UTF-8')
Title1
## 排查步骤 - **检查文件编码**:确保.Rmd文件以UTF-8编码保存(不含BOM)。在RStudio中可通过`File -> Save with Encoding...`选择UTF-8;用Notepad++等编辑器可查看并转换编码,避免使用GBK等非UTF-8编码。 - **排查关联外部文件**: - 检查`packages.bib`文件的编码,确保为UTF-8,无特殊控制字符或\x80这类无效字节; - 若之前引用过图片、数据等资源,即使现在注释掉路径,也要确认这些文件本身无编码问题。 - **检查代码块输出**:临时将setup代码块的`echo`设为`TRUE`,查看代码运行产生的输出是否包含非UTF-8字符;可在代码开头添加`options(encoding = "UTF-8")`强制设置编码。 - **查找隐藏特殊字符**:启用编辑器的显示不可见字符功能(比如RStudio的`View -> Show Invisible Characters`),排查文档中是否存在从其他地方复制来的智能引号、软连字符或\x80这类控制字符,删除后重新编译。 - **极简测试定位问题**:创建一个极简的posterdown测试文档,逐步添加原文件的内容,每次编译验证,找到触发报错的具体部分。示例测试文档: ```yaml --- title: Test Poster output: posterdown::posterdown_html knit: pagedown::chrome_print --- # Test Title Test content with % sign.
内容的提问来源于stack exchange,提问作者Rosalie Bruel
相关产品推荐
相关产品推荐

