【发布时间】:2021-04-01 06:50:34
【问题描述】:
我想确信,出于以下原因,绝对需要对文件使用 BOM 标记进行文件编码。
- 文件的信息必须是自包含的。我们没有找到一个明确的算法来确定哪种编码适合文件。
- 对于 shebang 行的兼容性问题,这个问题需要在脚本语言内部进行纠正,因为编码比 shebang 行更高的概念。
对于第一个声明,我很难确定哪种编码适合或不适合文件。因此,对文件应用不同的编码时常出现,我想大多数新开发者都会遇到这种情况,并且由于编码策略不同而忽略了文件中的怪异字符。
我已经认识到兼容性是软件维护的一个重要方面。但是,我认为让系统混乱的旧规则在以后的步骤中有所改变。
是否有任何想法或任何动作将添加BOM标记作为官方?或者有什么重要的理由不能引入 BOM 标记? (例如,存在识别编码文件的清晰算法。)
我的理解来自下面的链接,所以额外的链接来改变我的观点将是一个很大的乐趣。
谢谢,
【问题讨论】:
-
FWIW,很长一段时间以来,默认情况下,Windows 记事本(数十亿的最终用户)保存为没有 BOM 的 UTF-8(以前是 ANSI/CodePage)。这并不意味着 BOM 不是超级有用,如链接中所述。
-
很多软件无法正确处理带有 BOM 的 UTF-8 文件。虽然它在少数情况下可能会有所帮助,并且在封闭环境中可能会有所帮助,但在真实的开放世界中,它会导致更多问题而不是好处。
-
@Codo 我理解您的评论,即 BOM 可以带来一些好处,但它会导致许多工程问题。我同意你的评论。想想python2中的print语句的情况。许多用 python 2 编写的应用程序都使用 print with whitespace,但它在 python 3 中被取消了,并且 print with whitespace 被 print with parenthesis 替换。我认为编码规则需要这种转换。你怎么看?顺便说一句,感谢 cmets。
标签: file unicode encoding utf-8