UTF-8 подпись BOM в файлах PHP

Я писал, что некоторые прокомментировали классы PHP, и я наткнулся на проблему. Мое имя (для тега @author) заканчивается с a ș (который является символом UTF-8... и странным именем, я знаю).

Даже при том, что я сохранил файл как UTF-8, некоторые друзья сообщили, что видят, что символ полностью испортил (È™). Эта проблема уходит путем добавления подписи BOM. Но та вещь беспокоит меня немного, так как я не знаю так много об этом, кроме от того, на чем я видел на Википедию и по некоторым другим подобным вопросам здесь ТАК.

Я знаю, что это добавляет некоторые вещи в начале файла, и от того, что я понял дело не в этом плохо, но я заинтересован, потому что единственные проблематичные сценарии я читал о включенных файлах PHP. И так как я пишу, что классы PHP для совместного использования их, будучи совместимыми 100% более важны, чем наличие моего имени в комментариях.

Но я пытаюсь понять последствия, я должен использовать его без волнения? или есть ли случаи, когда это могло бы нанести ущерб? Когда?

22
задан svick 6 January 2013 в 16:08
поделиться

3 ответа

Действительно, BOM - это фактические данные, отправленные браузеру. Браузер с радостью проигнорирует его, но все же вы не сможете отправить заголовки.

Я думаю, что проблема действительно в настройках редактора у вас и вашего друга. Без BOM редактор вашего друга может автоматически не распознать файл как UTF-8. Он может попробовать настроить свой редактор так, чтобы он ожидал файл в UTF-8 (если вы используете настоящую IDE, такую как NetBeans, то это можно даже сделать настройкой проекта, которую можно передать вместе с кодом).

В качестве альтернативы можно попробовать некоторые хитрости: некоторые редакторы пытаются определить кодировку с помощью эвристики, основанной на введенном тексте. Вы можете попробовать начинать каждый файл с

<?php //Úτƒ-8 encoded

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

В общем, я рекомендую просто исправить настройки редактора.

О, подождите, я неправильно понял последнюю часть: для распространения кода куда бы то ни было, я полагаю, что безопаснее всего просто сделать все файлы содержащими только младшие 7-битные символы, т.е. обычный ASCII, или просто смириться с тем, что некоторые люди с древними редакторами видят ваше имя написанным смешно. Безопасного способа не существует. BOM определенно плох из-за того, что заголовки уже отправлены. С другой стороны, если вы вставляете символы UTF-8 только в комментарии и т.п., то единственным последствием того, что какой-то редактор неправильно поймет кодировку, будут странные символы. Я бы выбрал правильное написание вашего имени и добавил комментарий, ориентированный на эвристику, чтобы большинство редакторов поняли это, но всегда найдутся люди, которые вместо этого увидят неправильные символы.

24
ответ дан 29 November 2019 в 03:55
поделиться

Спецификация приведет к ошибке Заголовки уже отправлены , поэтому вы не можете использовать спецификацию в файлах PHP

{{1} }
13
ответ дан 29 November 2019 в 03:55
поделиться

Или вы можете активировать буферизацию вывода в php.ini, что решит проблему "уже отправленные заголовки". Также очень важно использовать буферизацию вывода для повышения производительности, если ваш сайт имеет значительную нагрузку.

2
ответ дан 29 November 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: