Org-mode 导出 html 的时候,中文偶尔会乱码

最近发现在把 org 文件通过 C-c C-e h h 导出为 html 文件的时候,中文会乱码。但是也有一定的几率会正常。没有找到乱码和正常的触发点。

使用的是 doom 配置。加了 #+LANGUAGE: zh 头。

我偶尔也碰到,不知道有没有什麼处理手段。

原始 org 內容:

#+caption: @@html:<b>我用什么把你留住</b>@@ @@html:<br>@@ 福禄寿 FloruitShow @@html:<br>@@
#+attr_html: :loading lazy
#+attr_html: :alt 我用什么把你留住 by 福禄寿 FloruitShow (2021)
#+attr_html: :title 我用什么把你留住 by 福禄寿 FloruitShow (2021)
#+attr_html: :data-href /images/album/20251226T195202--我用什么把你留住__20210218_floruitshow_albumwall_image_福禄寿.webp
[[file:images/album-wall/20251226T195202--我用什么把你留住__20210218_floruitshow_albumwall_image_福禄寿.avif?timestamp=1766926014678]]

用 org-publish 导出,偶尔會有亂碼:

coding-system 看着也是 utf-8,應該不是 coding-system 問題?

當前 buffer 的 coding-system

問題也不是因為路徑用了中文,有時內容中的文字也會亂碼,當內容比较多時,出現亂碼的概率會更高。

如果不用 org-publish,直接 export 為一个 HTML buffer,是没有亂碼的。

尝試過重新导出(也清過 org-publish 的 cache),但未必有用。 目前的辦法是將內容移到一個新位置,或修改有問題的文字,再重新导出,有時就能好。

再笨一點的辦法是,我直接改一下导出的 HTML,临時修复一下 :smiling_face_with_tear:

提供一个思路,把 字被变成两个乱码字符说明 org 处理时切割了文本并且很不幸切在了一个汉字的三个byte中间,具体哪里就要你们自己看了。

2 个赞