我刚刚换了电脑,运行 Biber 2.11 现在出现此错误:
Utils.pm:209> ERROR - Data file ... cannot be read in encoding 'UTF-8':
Can't decode ill-formed UTF-8 octet sequence <96> at C:\ ... Slurper.pm line 63
我的 .bib 文件非常大,已经积累了好几年了。因此,我怀疑它里面有缺陷。 有没有什么快速解决问题的方法?
新机器运行 Win 10、Biber 2.11、XeLaTeX 2018.10.31、LaTeX2e 2018-04-01 和 TeXLive 2018。旧机器运行 Win 7 及以上所有版本的稍早版本。
驱动程序 .tex 文件的 MWE:
\documentclass{article} % also with beamer
\usepackage[utf8]{inputenc} % problem arises whether or not include this
\usepackage[backend=biber,bibencoding=utf8]{biblatex} % problem arises whether or not include this
\addbibresource{bib-mwe.bib}
\begin{document}
cite reference \cite{mal-rwws}
\printbibliography
\end{document}
谢谢!
答案1
正如解释的那样https://github.com/plk/biber/issues/226Biber 用于读取.bib
文件的底层库没有提供错误的行号。因此 Biber 无法告诉您错误的位置。
通常问题很简单,整个文件没有猜测/声明的编码。请注意全部的文件内容很重要,因此评论也可能是一个问题。
对于 MWE,.bib
文件必须以 UTF-8 编码(或兼容编码,如 US-ASCII)。即使没有明确的bibencoding=utf8
,biblatex
也会从 猜测\usepackage[utf8]{inputenc}
您正在使用 UTF-8,并且如果您的 LaTeX 比 2018-04-01 更新,甚至会假定 UTF-8inputenc
因为它现在是标准。
如果.bib
文件出现问题,您应该执行以下步骤。
- 确定采用哪种编码应该有(通常 UTF-8 是个好主意,但如果您在文件中声明了不同的编码
.tex
,biblatex
通常会假定您的.bib
文件使用相同的编码,当然可以用 覆盖bibencoding
)。 - 找出你的
.bib
文件采用哪种编码实际上有。 - 如果编码不匹配,则需要重新编码
.bib
文件或biblatex
尝试不同的编码。
.bib
只需将文件内容复制并粘贴到明确设置为 UTF-8 的新文件中即可。
答案2
我遇到了同样的问题。我没有使用文本编辑器,而是在 jabref 中打开了 .bib 文件。您可以使用“文件”菜单中的“库属性”更改库编码。然后保存库。这也改变了 .bib 文件第一行的编码规范,否则我必须手动更改(当我使用文本编辑器时)。
答案3
感谢您的有益评论。
下列的大卫's,问题通过以下方式解决:
.bib
在文本编辑器(例如记事本)中打开该文件- 通过单击底部的菜单栏将 WinEdt(我的 LaTeX 编辑器)中的编码设置为 UTF-8(最初设置为 ANSI)
- 在 WinEdt 中创建一个空白文档
- 将原始文件的内容
.bib
从记事本粘贴到 WinEdt 中 - 将新的 WinEdt 文档保存为
.bib
文件 - 使用新
.bib
文件进行编译