Почему & # 65279; появляется в моем HTML?
Я вижу этого персонажа в Firebug 
,
Я не знаю, почему это происходит, в моем коде нет такого символа. Для Firefox это нормально, но в IE все ломается. Я не могу даже найти этого персонажа в Google.
Я сохранил свой файл с кодировкой UTF-8 без BOM.
10 ответов
Персонаж в вопросе 
является символом Unicode 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF). Возможно, вы скопировали его в свой код с помощью копирования / вставки, не осознавая этого. Тот факт, что он не виден, затрудняет определение того, используете ли вы редактор, отображающий реальные символы Юникода.
Один из вариантов - открыть файл в очень простом текстовом редакторе, который не понимает юникод, или в том, который понимает его, но имеет возможность отображать любые символы, отличные от ascii, используя их действительные коды.
Найдя его, вы можете удалить небольшой текстовый блок вокруг него и вручную ввести этот текст.
Просто используйте notepad ++ с кодировкой UTF-8 без спецификации.
Да, это так просто исправить, просто откройте этот файл с помощью notepad++ и выполните следующие действия -> Кодировка \ кодировка UTF-8 без спецификации. затем сохраните это. Это работает и для меня!
Пытаться:
<?php
// Tell me the root folder path.
// You can also try this one
// $HOME = $_SERVER["DOCUMENT_ROOT"];
// Or this
// dirname(__FILE__)
$HOME = dirname(__FILE__);
// Is this a Windows host ? If it is, change this line to $WIN = 1;
$WIN = 0;
// That's all I need
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>UTF8 BOM FINDER and REMOVER</title>
<style>
body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
.FOUND { color: #F30; font-size: 14px; font-weight: bold; }
</style>
</head>
<body>
<?php
$BOMBED = array();
RecursiveFolder($HOME);
echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';
foreach ($BOMBED as $utf) { echo $utf ."<br />\n"; }
echo '</p>';
// Recursive finder
function RecursiveFolder($sHOME) {
global $BOMBED, $WIN;
$win32 = ($WIN == 1) ? "\\" : "/";
$folder = dir($sHOME);
$foundfolders = array();
while ($file = $folder->read()) {
if($file != "." and $file != "..") {
if(filetype($sHOME . $win32 . $file) == "dir"){
$foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
} else {
$content = file_get_contents($sHOME . $win32 . $file);
$BOM = SearchBOM($content);
if ($BOM) {
$BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
// Remove first three chars from the file
$content = substr($content,3);
// Write to file
file_put_contents($sHOME . $win32 . $file, $content);
}
}
}
}
$folder->close();
if(count($foundfolders) > 0) {
foreach ($foundfolders as $folder) {
RecursiveFolder($folder, $win32);
}
}
}
// Searching for BOM in files
function SearchBOM($string) {
if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
return false;
}
?>
</body>
</html>
скопируйте этот код в php, загрузите файл в корневой каталог и запустите его.
Подробнее об этом: http://forum.virtuemart.net/index.php?topic=98700.0
"Я не знаю, почему это происходит"
Ну, я только что натолкнулся на возможную причину:-) Ваша HTML-страница собирается из отдельных файлов. Возможно, у вас есть файлы, которые содержат только тело или часть баннера вашей последней страницы. Эти файлы содержат маркер спецификации (0xFEFF). Затем, как часть процесса слияния, вы запускаете HTML tidy или xmllint поверх окончательного файла HTML слияния.
Это приведет к этому!
Если вы используете Notepad++, "Меню" >> "Кодировка" >> "Конвертировать в UTF-8" ваши "включаемые" файлы.
Если у вас есть много файлов для просмотра, вы можете использовать этот инструмент: https://www.mannaz.at/codebase/utf-byte-order-mark-bom-remover/
Кредиты Морису
Это помогает мне очистить систему с помощью MVC в CakePhp, так как я работаю в Linux, Windows, с различными инструментами... в некоторых файлах мой дизайн был поврежден... поэтому после регистрации в Chrome с помощью средства отладки найдите ошибку & # 65279
Перед чистым пространством (отделка)
Затем заменить на RegEx .replace("/\xEF\xBB\xBF/", "")
Я работаю над Javascript, я сделал с JavaScript.
Старая глупая уловка, которая работает в этом случае... вставьте код из вашего редактора в MS Notepad, затем наоборот, и злой персонаж исчезнет! Я черпаю вдохновение из проблемы с копией пасты wyisyg/msword. Блокнот ++ UTF-8 без спецификации работает также.
Вот мои 2 цента: у меня была та же самая проблема, и я попытался использовать Notepad++ для преобразования в UTF-8 без спецификации, а также старый трюк "копировать в MS notepad затем снова обратно", но все безрезультатно. Моя проблема была решена, убедившись, что все файлы (и "включенные" файлы) были в одной файловой системе; У меня были некоторые файлы в формате Windows, а некоторые были скопированы с удаленного сервера Linux, поэтому были в формате UNIX.