当前位置: 首页 > 面试题库 >

PHP文件中的UTF-8 BOM签名

翟功
2023-03-14
问题内容

我在写一些注释过的PHP类,但偶然发现了一个问题。我的名字(用于@author标记)以一个ș(以UTF-8字符开头,…和一个奇怪的名字,我知道)结尾。

即使我将文件另存为UTF-8,也有一些朋友报告说他们看到这个字符完全弄乱了(È™)。通过添加BOM表签名可以解决此问题。但是那件事让我有些烦恼,因为除了我在Wikipedia上以及关于SO的其他一些类似问题上所了解的之外,我对此并不了解。

我知道它在文件的开头添加了一些内容,据我了解还不错,但是我很担心,因为我所读到的唯一有问题的场景都涉及到PHP文件。并且由于我正在编写PHP类以共享它们,因此100%兼容比在注释中添加我的名字更重要。

但是我试图理解其含义,我应该不用担心使用它吗?还是有可能造成损坏的情况?什么时候?


问题答案:

实际上,BOM是发送到浏览器的实际数据。浏览器将愉快地忽略它,但是仍然不能发送标头。

我相信问题确实出在您和您朋友的编辑器设置上。没有BOM表,朋友的编辑器可能不会自动将文件识别为UTF-8。他可以尝试设置他的编辑器,以便该编辑器 期望
文件位于UTF-8中(如果您使用NetBeans这样的真实IDE,那么甚至可以将其设置为项目设置,并随代码一起传输)。 。

另一种方法是尝试一些技巧:一些编辑器尝试根据输入的文本使用启发式方法确定编码。您可以尝试使用以下命令启动每个文件

<?php //Úτƒ-8 encoded

也许启发式就能做到。可能有更好的东西放在那里,您可以用google搜索常见的哪种编码检测启发式方法,或尝试一下:-)

总而言之,我建议仅修复编辑器设置。

哦,等等,我读错了最后一部分:为了将代码传播到任何地方,我想您最安全的做法是仅使所有文件仅包含较低的7位字符(即纯ASCII),或者仅接受具有古老编辑器的某些人看到你的名字写得好笑。没有故障安全方法。由于标头已经发送,物料清单绝对不好。另一方面,只要您仅在注释中放入UTF-8字符,这样,一些编辑人员就会误解编码的唯一影响就是奇怪的字符。我会为您正确拼写您的名字并添加针对启发式的注释,以便大多数编辑者都可以使用它,但是总会有人看到假字符。



 类似资料:
  • 问题内容: 我是越南人,我想上传utf-8文件名,例如 这是我的代码 但是当我上传时,我在计算机D:\上看到的文件如下 如何解决这个问题 问题答案: 我使用的是Windows 8中文版,与此同时我也遇到类似的问题: 代表并代表Code page 936 ,这是Windows简体中文版的默认代码页。 所以我认为也许您的问题可以通过类似的方式解决: 我不太确定您的操作系统的默认代码页是否正确,您应该通

  • 我在几个小时的研究后发布了这个(几次...)。我还找不到任何答案。 我的目标是使用PHP编写一个CSV文件。这个文件必须有中文ANSI编码(我想简体中文是GB2312,在记事本中我只看到ANSI编码)。必须导入到另一个工具。 【重要提示】 我们目前正在转换一个带有记事本的文件和一台默认语言为中文的PC。这个过程是: 从web-app获取UTF8 CSV 保存为CSV与Excel 2003在中国PC

  • 我有一些用ANSI编码的php脚本文件。现在我已经将我的网站转换为html5,我需要UTF-8中的所有内容,以便这些文件中的重音可以正确显示,而无需通过iconv()进行任何php转换。我使用记事本++在UTF-8上设置脚本编码并保存文件,大多数都很好,重音显示正确,只有主脚本现在阻止了一切,服务器只返回一个白页,没有任何错误消息,即使使用! 当我在记事本++中将编码更改为ANSI并保存文件而不做

  • 问题内容: 我正在尝试使用preg_match搜索UTF8编码的字符串。 这应该打印1,因为“ H”在字符串“¡Hola!”中的索引1处。但是它显示为2。因此,即使我在正则表达式中传递了“ u” 修饰符,似乎也不会将主题视为UTF8编码的字符串。 我在php.ini中具有以下设置,并且其他UTF8功能正在运行: 有任何想法吗? 问题答案: “ u”开关仅对pcre有意义,PHP本身并未意识到。 从

  • 本文向大家介绍如果文件名是UTF-8,则使PHP pathinfo()返回正确的文件名,包括了如果文件名是UTF-8,则使PHP pathinfo()返回正确的文件名的使用技巧和注意事项,需要的朋友参考一下 除Latin-1外,大多数核心PHP函数均不处理字符集。但是在'pathinfo'之前,放置'setlocale'可以用于返回正确的文件名,即使它是UTF-8编码的。 默认情况下,它以'C'语

  • 问题内容: 我有一个PHP脚本,名为: http://cyber- flick.com/apiMorpho.php?method=getMorphoData&word=kot 以纯文本显示一些数据: 如您所见,在适当的字符位置上有很多“忙碌”。我想做的是以某种方式显示此内容,以便人们在浏览器中看到正确的UTF-8字符。 您可以将其封装在HMTL标签中并以元UTF-8编码进行设置,但是由于将从该脚本