Я писал, что некоторые прокомментировали классы PHP, и я наткнулся на проблему. Мое имя (для тега @author) заканчивается с a ș
(который является символом UTF-8... и странным именем, я знаю).
Даже при том, что я сохранил файл как UTF-8, некоторые друзья сообщили, что видят, что символ полностью испортил (È™
). Эта проблема уходит путем добавления подписи BOM. Но та вещь беспокоит меня немного, так как я не знаю так много об этом, кроме от того, на чем я видел на Википедию и по некоторым другим подобным вопросам здесь ТАК.
Я знаю, что это добавляет некоторые вещи в начале файла, и от того, что я понял дело не в этом плохо, но я заинтересован, потому что единственные проблематичные сценарии я читал о включенных файлах PHP. И так как я пишу, что классы PHP для совместного использования их, будучи совместимыми 100% более важны, чем наличие моего имени в комментариях.
Но я пытаюсь понять последствия, я должен использовать его без волнения? или есть ли случаи, когда это могло бы нанести ущерб? Когда?
Действительно, BOM - это фактические данные, отправленные браузеру. Браузер с радостью проигнорирует его, но все же вы не сможете отправить заголовки.
Я думаю, что проблема действительно в настройках редактора у вас и вашего друга. Без BOM редактор вашего друга может автоматически не распознать файл как UTF-8. Он может попробовать настроить свой редактор так, чтобы он ожидал файл в UTF-8 (если вы используете настоящую IDE, такую как NetBeans, то это можно даже сделать настройкой проекта, которую можно передать вместе с кодом).
В качестве альтернативы можно попробовать некоторые хитрости: некоторые редакторы пытаются определить кодировку с помощью эвристики, основанной на введенном тексте. Вы можете попробовать начинать каждый файл с
<?php //Úτƒ-8 encoded
и, возможно, эвристика поймет это. Возможно, там есть что-то получше, и вы можете либо погуглить, какие эвристики определения кодировки распространены, либо просто попробовать :-)
В общем, я рекомендую просто исправить настройки редактора.
О, подождите, я неправильно понял последнюю часть: для распространения кода куда бы то ни было, я полагаю, что безопаснее всего просто сделать все файлы содержащими только младшие 7-битные символы, т.е. обычный ASCII, или просто смириться с тем, что некоторые люди с древними редакторами видят ваше имя написанным смешно. Безопасного способа не существует. BOM определенно плох из-за того, что заголовки уже отправлены. С другой стороны, если вы вставляете символы UTF-8 только в комментарии и т.п., то единственным последствием того, что какой-то редактор неправильно поймет кодировку, будут странные символы. Я бы выбрал правильное написание вашего имени и добавил комментарий, ориентированный на эвристику, чтобы большинство редакторов поняли это, но всегда найдутся люди, которые вместо этого увидят неправильные символы.
Спецификация приведет к ошибке Заголовки уже отправлены
, поэтому вы не можете использовать спецификацию в файлах PHP
Или вы можете активировать буферизацию вывода в php.ini, что решит проблему "уже отправленные заголовки". Также очень важно использовать буферизацию вывода для повышения производительности, если ваш сайт имеет значительную нагрузку.