[英]Converting ANSI to UTF-8 inserts characters before the doctype
美好的一天,
我正在尝试将我的网站从ANSI编码的PHP文件转换为UTF-8。 我将header.php和footer.php文件转换为UTF-8,但是当我转换index.php时,页面显示不正确。
使用ANSI编码的index.php:
<?php
include 'header.php';
echo '<h1>ANSI</h1>';
include 'footer.php';
?>
输出: http : //www.quimp.com/gce/ansi.jpg
以UTF-8编码的index.php :(从记事本++转换)
<?php
header('Content-Type: text/html; charset=utf-8');
include 'header.php';
echo '<h1>UTF-8</h1>';
include 'footer.php';
?>
输出: http : //www.quimp.com/gce/utf8.jpg
当我检查页面的源代码时,输出似乎正确(<head>内容应该在该位置)。 但是,如果我从浏览器复制了UTF-8版本的源代码并将其粘贴到notepad ++中,则会添加一些字符。 它们看起来像是换行符,并且在“ <”上带有重音符号:
<!DOCTYPE html> // htmlentities() output
%0A%EF%BB%BF%3C%21DOCTYPE+html%3E%0A // urlencode() output
删除这些字符后,页面将正确呈现。 该网站是www.quimp.com。 header.php的内容可以在这里找到:quimp.com/gce/header.txt
我搜索了很多,但找不到类似的问题。 知道是什么原因造成的吗?
非常感谢您的宝贵时间! -本
这是一个BOM(字节顺序标记)。
UTF-16BE和UTF-16LE文件(大端和小端)通常以BOM(Unicode字符0xFEFF)开头,因此您可以检测文件的字节序。
UTF-8没有这个问题,但是无论如何有些转换器会插入BOM。 文件的开头将显示为3个字节,UTF-8表示为0xFEFF。
您没有说转换的方式。 无论使用哪种工具,都可以查看是否可以告诉它不要插入BOM或找到其他工具。
编辑 :确认,我只是看了http://quimp.com/gce/header.txt ,这是一个以FEFF字符开头的UTF-8编码文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.