Исходный код PHP в файлах UTF-8; как правильно интерпретировать?

Я строю инструменты для анализа исходного кода. Такие инструменты должны правильно читать файлы исходного кода, особенно в том, что касается кодировки символов. Например, "Какова точная строка байтов в строковом литерале? " (как PHP-литералы, так и HTML-текст).

Возможно, я ошибочно понимаю, что исходные файлы PHP имеют только 8-битные символы (то есть механизм PHP читает их таким образом [правильно]?, Поскольку они должны содержать только 8-битные символы). Но восемь битных символов вкакая кодировка? (Я предполагаю, что предназначен для соответствия ISO-8859-1 (-x?) [Может кто-нибудь процитировать главу и стих?]. То есть, умлаут предназначен для умлаута, верно? После этого можно писать сценарии PHP с HTML и последовательности для большинства европейских наций / наборов символов прямо.

Но ясно, что с Юникодом это проблематично. Насколько я могу судить, большинство приложений PHP имеют дело с Unicode, по сути, имея строки, содержащие последовательности байтов UTF-8, которые могут быть вставлены в 8-битные строки PHP. После этого можно создавать сценарии, HTML-код которых содержит последовательности Unicode UTF-8, если вы сообщаете серверу, что генерируете текст UTF-8.

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

Меня озадачивают исходные файлы PHP, закодированные как UTF-8 (в пакете Joomla содержится ~ 1800 исходных файлов, из которых около 10 - это UTF-8, а остальные - нет). Любые (не ASCII) европейские символы, которые правильно отображаются в рендеринге UTF-8, фактически кодируются как многобайтовые последовательности. Я полагаю, что на таких страницах, которые обслуживаются как UTF-8, HTML будет правильно отображаться. Но любые сравнения строк для европейских символов или других символов Юникода, которые, по-видимому, правильно отображаются в текстовом редакторе, просто выиграли ».т работа. И строковые литералы не будут содержать то, что они, кажется, содержат. Программисты используют файлы UTF-8, потому что этоЧто предлагают редакторы? Они делают это нарочно? Или это просто несчастный случай, который нене имеет значения для большинства работ?

Итак, как следует читать исходный файл PHP? (в частности, в какой кодировке символов?) Один из возможных ответов - всегда в виде 8-битных кодов ISO-8859-1, независимо от фактического содержимого или спецификаций (я вижу много PHP-файлов, помеченных спецификацией UTF-8). Другой ответ, как UTF-8, если так помечен.

[Наши инструменты читают и пишут произвольные кодировки. А "тривиальный» Инструмент для чтения файлов в одном символе, записи идентичных кодов в другой кодировке. Таким образом, чтение файлов PHP в формате UTF-8 приводит к проблемам при написании файлов, эквивалентных ISO8859-1, поскольку многие кодовые точки UTF-8 (например, символ евро) не могут быть закодированы в ISO8859-x.]

РЕДАКТИРОВАТЬ 30 августа. Теперь мы проверяем файлы PHP, чтобы узнать, имеют ли они спецификации UTF-8 или, по-видимому, имеют последовательности UTF-8, которые являются законными. В любом из этих случаев мы читаем файл как UTF-8; в противном случае мы по умолчанию читаем его как ISO8859-1. Теперь мы сохраняем кодировку файла, если изменим его. (Чтобы получить все это правильно, довольно много работы). Кажется, это безопасная стратегия, но она может отличаться от ожидаемой программистами PHP.

Ответы на вопрос(3)

Ваш ответ на вопрос