Преобразование ANSI в UTF-8 вставляет символы перед типом документа - PullRequest
0 голосов
/ 15 октября 2011

Добрый день,

Я пытаюсь преобразовать свой сайт из PHP-файлов в кодировке ANSI в UTF-8. Я конвертировал мои файлы header.php и footer.php в UTF-8, но когда я конвертировал свой index.php, страница отображается неправильно.

index.php, закодированный в ANSI:

<?php
include 'header.php';
echo '<h1>ANSI</h1>';
include 'footer.php';
?>

Выходы: http://www.quimp.com/gce/ansi.jpg

<Ч />

index.php, закодированный в UTF-8: (преобразован из блокнота ++)

<?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

Когда я проверяю источник страницы, вывод кажется правильным (содержимое находится там, где оно должно быть). Однако, если я скопирую исходный код версии UTF-8 из браузера и вставлю его в notepad ++, некоторые символы будут добавлены. Они выглядят как разрыв строки и ударение на «<»: </p>

<!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

Я искал тонну, но не смог найти подобную проблему. Есть идеи, что может вызвать это?

Большое спасибо за ваше время! -Бен

1 Ответ

1 голос
/ 15 октября 2011

Это спецификация (метка порядка байтов).

Файлы UTF-16BE и UTF-16LE (с прямым и обратным порядком байтов) часто начинаются с спецификации (Unicode-символ 0xFEFF), поэтому вы можете определить порядок байтов в файле.

UTF-8 не имеет этой проблемы, но некоторые конвертеры в любом случае вставляют спецификацию. Это будет показано как 3 байта как начало файла, представление UTF-8 0xFEFF.

Вы не сказали, как вы делаете преобразование. Какой бы инструмент вы ни использовали, посмотрите, сможете ли вы узнать, как сказать ему не вставлять спецификацию, или найти другой инструмент.

РЕДАКТИРОВАТЬ : Подтверждено, я только что посмотрел на http://quimp.com/gce/header.txt,, и это файл в кодировке UTF-8, начинающийся с символа FEFF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...