我读到在文本文件的开头添加UTF-8字节顺序标记(3个字符)使其成为UTF-8文件,但我也读到unicode建议不要对UTF-8使用BOM。
我正在用PHP生成文件,并且要求这些文件是UTF-8。我已经将UTF-8 BOM添加到文件的开头,但是我从解析文件的公司那里收到了关于文件开头的垃圾字符的反馈,这给了我将文件设置为UTF-8的要求。
如果我在记事本中打开文件,它不会显示BOM,如果我选择另存为,它会显示UTF-8作为默认选项。
在Textpad32中打开文件时,将在文件开头显示3个字符。
那么,是什么使文件成为UTF-8呢?
发布于 2018-09-29 07:55:30
文本是UTF-8,因为它与UTF-8一样有效,并且作者认为它是有效的。
作者的决定如何传达给消费者是另一个问题,它涉及约定、猜测和带内或带外信令的各种方案,如HTTP或HTML字符集、BOM (增强了猜测)、一些信封/嵌入格式、附加数据流、文件命名等等。
发布于 2018-09-29 11:23:02
该文件不需要任何明确的指示它是UTF-8,现代文本编辑器应该从上下文中检测UTF-8编码,因为UTF-8序列非常不同。
此外,正如您亲身经历的那样,PHP不喜欢BOM头文件,它是一个愚蠢的东西,经常搞乱脚本输出,并产生比它解决的更多的问题。
HTML有它自己的方式来声明文件的编码,你可以在HTML本身中这样做:
<head>
<meta charset="UTF-8">
</head>
或者在HTTP头中声明编码,这里使用PHP:
header('Content-Type: text/html; charset=utf-8');
如果没有指定任何编码,现代浏览器也会假定UTF-8为默认编码。毕竟,它是web的标准。
https://stackoverflow.com/questions/52563408
复制相似问题