Skip to content
This repository has been archived by the owner on Apr 24, 2023. It is now read-only.

为什么有些章最后多出一个空白页?

02015678 edited this page Feb 6, 2015 · 9 revisions

这个问题很多人问过我,我这会儿想起来了,就先开一个wiki。找时间再补图。

这个问题的原因很可能是多出空白页章后面的一章被保存成有“BOM头”的utf8编码格式了。最好的解决办法是下载一个notepad++逐个章文件打开,从菜单“格式”中既可以看到当前的编码是不是带“BOM头”的,又能直接在该菜单中重新保存成正确的编码。

名词点击:BOM (byte-order mark)

字节顺序标记(英语:byte-order mark,BOM)是位于码点U+FEFF的统一码字符的名称。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字符串编码时,这个字符被用来标示其字节序。它常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的记号。

UTF-8则没有字节顺序的议题。UTF-8编码过的字节顺序标记则被用来标示它是UTF-8的文件。它只用来标示一个UTF-8的文件,而不用来说明字节顺序。[1]许多视窗程序(包含记事本)会添加字节顺序标记到UTF-8文件。然而,在类Unix系统(大量使用文本文件,用于文件格式,用于进程间通信)中,这种作法则不被建议采用。因为它会妨碍到如解译器脚本开头的Shebang等的一些重要的码的正确处理。它亦会影响到无法识别它的编程语言。如gcc会报告源码文件开头有无法识别的字符。而在PHP中,如果没有激活输出缓冲(output buffering),它会使得页面内容开始被送往浏览器(即:用户头文件已被提交),这使PHP脚本无法指定用户头文件(HTTP Header)。字节顺序标记在UTF-8中被表示为序列EF BB BF,对大部分未准备好处理UTF-8的文本编辑器及网页浏览器而言,在ISO-8859-1的环境中则会显示。