关于Encode in UTF-8 without BOM
Posted jddreams
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Encode in UTF-8 without BOM相关的知识,希望对你有一定的参考价值。
定义
BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。它的编码是FEFF。
说明
在 UTF-8 文件中放置 BOM 主要是微软的习惯
UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。但不含 BOM 的 UTF-8 才是标准形式。UTF-8 的网页代码不应使用 BOM,否则常常会出错。
为什么BOM不受欢迎
主要问题出在UNIX那个所有脚本语言通行的首行#!标示,这东西依赖于shell解析,而很多shell出于兼容的考虑不检测BOM,所以加进BOM时shell会把它解释为某个普通字符输入导致解释失败。其实很多现代脚本语言,比如Python,其解释器本身都是能处理BOM的,但是shell卡在这里,没办法,只能躺着也中枪。说起来这也不能怪shell,因为BOM本身违反了一个UNIX设计的常见原则,就是文档中存在的数据必须可见。BOM不能作为可见字符被文本编辑器编辑,就这一条很多UNIX开发者就不满意。
Windows 记事本有个毛病就是在 UTF-8 文件开头加 BOM,所以在windows环境下千万不要用记事本来编辑UTF-8文件。
解决办法:可以用NotePad++ 或者 其它文本编辑软件转储为UTF-8 without BOM 格式
以上是关于关于Encode in UTF-8 without BOM的主要内容,如果未能解决你的问题,请参考以下文章
关于Python脚本通过crontab调度的时候报错UnicodeEncodeError: ‘ascii’ codec can’t encode characters in positi的解决方案
UnicodeEncodeError: 'ascii' codec can't encode characters in
UnicodeEncodeError: 'ascii' codec can't encode characters in position 820-823: ordinal n
Python3中出现UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in ra
python报错:TypeError: string argument without an encoding
python里面出现中文的时候报错 'ascii' codec can't encode characters in position