更新 latex 后,我收到该错误。我尝试了很多方法来解决,但都无济于事。请帮帮我
LaTeX Error: Invalid UTF-8 byte "92
l.962 speakers’
bureaus; membership, employment, consultancies, stock
?
答案1
您的文件不是用 UTF-8 编码的,但很可能是 Windows 代码页 1252。(该编码中的左单引号是“92”。)如果您在 PDFLaTeX 中编译并且不知道编码是什么,则包selinput
可以自动检测它。您可以将inputenc
当前拥有的任何命令替换为:
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
Euro={€},
}
这会检测任何支持西欧语言的编码,并且如果文件重新编码,它将继续工作。(例如,TeX.SX 会自动将您在此处上传的任何 MWE 转换为 UTF-8。)
但是,您可能更喜欢将文档保存为 UTF-8。一些较新的工具需要它。大多数编辑器都有这样做的选项。例如,记事本会在窗口右下角显示编码,并在另存为时为您提供设置它的选项。
答案2
LaTeX Error: Invalid UTF-8 byte "92
l.962 speakers’
bureaus; membership, employment, consultancies, stock
?
也许错误信息是由于 造成’
的speakers’ bureaus
。
如今,使用 utf-8(一种多字节编码)对文本文件进行编码在许多计算机平台上都很流行。(使用多字节编码,编码一个字符可能需要几个字节。)
例如,在旧版 Windows 平台上,文本文件使用 cp1252 编码,这是一种单字节编码,非常流行。(使用单字节编码,一个字符占用一个字节。)
如今,LaTeX 的 inputenc 包会自动加载选项“utf-8”,因此默认情况下输入文件被假定为以 utf-8 编码。
(如果更新之前您的 LaTeX 很旧,那么更新之前 inputenc/utf-8 默认不会加载。)
’
字节 Hex92 = Dec146 = Bin 10010010 表示字符编码方案 Windows cp1252 中的右单引号。
但是在字符编码方案 utf-8 中,该字节 - 就像每个前导位的字节一样10
- 是多字节字符的非首字节。
如果在处理 utf-8 时该字节出现在预期为 utf-8 字符的第一个字节的位置,则会引发错误消息。
如果更新的 LaTeX 在默认情况下自动加载 inputenc/utf-8 并处理 .tex-input-file,并因此(错误地)假设它是用 utf-8 编码的,而实际上它是用 cp1252 编码的并且包含一些单右引号字符,则可能会发生这种情况。
也许您可以通过将包 inputenc 中的指令\inputencoding{cp1252}
(或任何正确的编码)放置在输入相关文件的指令之前来解决该问题。
\inputencoding{utf8}
在处理其他\usepackage
指令之前或在处理发生加载该文件的指令的文件的更多内容之前,您可能需要切换回 utf-8。
或者将有问题的文件重新编码为 utf-8。