近日给同事搭建nginx静态服务器时发现,他的电脑上不能使用中文路径,会出现以下错误:
换成中文路径则不会出现以上问题。最后研究发现,是nginx.conf文件编码格式有问题。
用windows记事本打开文件再保存会保存为UTF-8 BOM编码。这个编码在nginx中是不能被识别中文的。
我们只要要用notepad打开nginx.conf,选择编码为UTF-8无BOM编码后,查看中文显示能否正常,而后按Ctrl+s保存文件就可。
至于BOM是个啥:
UTF-8 不需要 BOM,虽然 Unicode 标准允许在 UTF-8 中使用 BOM。
所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯)。
BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。微软在 UTF-8 中使用 BOM 是由于这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。
上述为知乎大神的评论,引用一下。大家以后碰到编码问题可以试试这种方法。