为PHP UTF-8字符设置cpanel服务器[BOM错误]

为PHP UTF-8字符设置cpanel服务器[BOM错误],php,apache,encoding,utf-8,byte-order-mark,Php,Apache,Encoding,Utf 8,Byte Order Mark,让我的服务器使用UTF-8字符让我有点头疼。我有一份英国城镇的名单,其中有些城镇有盖尔语的特征,有些苏格兰城镇似乎也有特殊的特征 为了方便起见,开发人员在PHP文件的开头放了一个BOM表。在他的服务器上,Ubuntu设置运行良好,因为显然他的PHP默认为UTF-8。然而,在我的服务器上,它导致了一个问题,标题已经被发送,显然是将BOM作为ABC而不是BOM声明读取 我进入WHM并将php.ini中的默认字符集设置为UTF-8,php信息将默认字符集读取为UTF-8。我不想编辑httpd.conf

让我的服务器使用UTF-8字符让我有点头疼。我有一份英国城镇的名单,其中有些城镇有盖尔语的特征,有些苏格兰城镇似乎也有特殊的特征

为了方便起见,开发人员在PHP文件的开头放了一个BOM表。在他的服务器上,Ubuntu设置运行良好,因为显然他的PHP默认为UTF-8。然而,在我的服务器上,它导致了一个问题,标题已经被发送,显然是将BOM作为ABC而不是BOM声明读取

我进入WHM并将php.ini中的默认字符集设置为UTF-8,php信息将默认字符集读取为UTF-8。我不想编辑httpd.conf在整个服务器上将Apache设置为UTF-8,因为这可能会在其他地方引起问题,所以我在.htaccess文件中设置UTF-8,如下所示

AddDefaultCharset utf-8
然而,BOM表仍被读取为文本,并弄乱了标题。随着BOM的删除,页面和网站工作正常,只有特殊字符被读取为随机ISO字符


我不知道;我在服务器设置或管理方面没有太多经验,也没有在UTF-8中使用BOM或设置和运行PHP的经验,所以任何帮助或线索都会非常有用。毫无疑问,我做了一些非常愚蠢和明显的事情。

你所做的已经足够了:删除BOM并将文件中的编码设置为UTF-8,而不使用BOM使用记事本++或升华文本,就足以使其作为UTF-8工作。对我来说,你应该到处删除BOM。它总是引起很多麻烦。例如,如果您让htaccess使用BOM,您将看到您的服务器将出现服务器错误500。顺便问一下,你是否强制html页面中的字符集为UTF-8?是的,我的文档一直都是用notepad++设置为UTF-8,没有BOM,我甚至都不知道,但由于这是另一个开发人员的构建,我不得不将BOM以外的所有内容复制粘贴到新文档中。是的,HTML在标题中有元数据,表示UTF-8城市名称来自数据库或只是纯文本?它们在PHP文件中作为文本输入,有些是UTF-8字符,有些是HTML字符代码。