繁体   English   中英

将ANSI转换为UTF-8会在doctype之前插入字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM