Функция PHP Include, выводящая неизвестный символ

При использовании функции php include include успешно выполняется, но он также выводит char перед выводом вывода include, char имеет шестнадцатеричное значение 3F, и я понятия не имею, откуда он берется, хотя, похоже, происходит с каждым включением.

Сначала я подумал, что это кодировка файлов, но, похоже, это не проблема. Я создал тестовый пример, чтобы продемонстрировать это: (ссылка больше не работает) http://driveefficiently.com/testinclude.php этот файл состоит только из:

<? include("include.inc"); ?>

и include.inc состоит только из:

<? echo ("hello, world"); ?> 

и все же вывод: "?Привет, мир" где? - это символ со случайным значением. Это ценность, происхождение которой я не знаю, и иногда она немного портит мои сайты.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
0
2 947
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Я вижу hello, world на странице, на которую вы ссылаетесь. Никаких проблем, которые я вижу ...

Я использую Firefox 3.0.1 и Windows XP. Какой браузер / ОС вы используете? Возможно, это может быть проблемой.

Символ 3F на самом деле является вопросительный знак, он не отображается как один.

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

Теоретически это может быть некоторая проблема с веб-прокси, но я склонен подозревать случайный вопросительный знак в вашей разметке PHP ... который, возможно, вы уже исправили, поэтому мы не видим проблемы.

Он не отображается на отображаемой странице в Firefox или IE, но вы можете увидеть забавного персонажа при просмотре исходного кода в IE.

Это на машине с Linux? Не могли бы вы найти и заменить на vim или sed, чтобы узнать, можно ли таким образом избавиться от 3F?

Если он в Windows, попробуйте открыть include.inc с помощью Блокнота, чтобы посмотреть, виден ли забавный символ и его можно удалить.

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

Ваш веб-сервер (или ваш текстовый редактор) очевидно включает в документ Спецификация. Я не вижу мошеннического символа в моем браузере, за исключением случаев, когда я явно устанавливаю кодировку сайта Latin-1. Затем я вижу две (!) Спецификации UTF-8.

/ EDIT: Из того факта, что существуют спецификации два, я прихожу к выводу, что спецификация фактически включена вашим редактором в начало файла. Какой редактор вы используете? Если вы используете Visual Studio, вы должны сказать «Сохранить как…» в меню «Файл», а затем нажать кнопку «Сохранить с кодировкой…». Там выберите «UTF-8 без спецификации» или что-то подобное.

Теперь вы можете выполнить глобальную настройку, описанную здесь: stackoverflow.com/questions/5406172/utf-8-without-bom

Rob Sedgwick 01.05.2016 23:47
Ответ принят как подходящий

Вы видите знак порядка байтов UTF-8:

The UTF-8 representation of the BOM is the byte sequence EF BB BF, which appears as the ISO-8859-1 characters  in most text editors and web browsers not prepared to handle UTF-8.

Byte Order Mark on Wikipedia

PHP не понимает, что эти символы должны быть «скрыты», и отправляет их в браузер, как если бы они были обычными символами. Чтобы избавиться от них, вам нужно будет открыть файл с помощью «правильного» текстового редактора, который позволит вам сохранить файл как UTF-8 без ведущей спецификации.

Вы можете узнать больше об этой проблеме здесь

I'd also be curious to see what happens if you copy the code out of the include and just run it by itself.

Марк: это решение для виртуального хостинга, поэтому я не могу получить доступ к файлу через оболочку. Однако, как вы можете видеть здесь, нет символов, которых не должно быть, и запуск того же файла в качестве сценария не создает этот символ. (Компания виртуального хостинга не оказала помощи, постоянно говоря мне, что это проблема браузера).

Другие вопросы по теме