Unicode PHP исходные файлы - PullRequest
       2

Unicode PHP исходные файлы

4 голосов
/ 16 апреля 2011

Для проекта, над которым я сейчас работаю, мне нужно было добавить несколько символов юникода в какой-нибудь php-файл.

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

Это заставило меня задуматься:

Что мешает мне использовать юникод для всех моих PHP-файлов?

Ответы [ 4 ]

5 голосов
/ 16 апреля 2011

Ничто не мешает вам использовать юникод во всех ваших php-файлах, только если вам нужно отредактировать ваши скрипты, если установленный параметр юникода мешает обработке скрипта.

3 голосов
/ 16 апреля 2011

При работе с исходными файлами в кодировке UTF8 необходимо помнить следующее:

  1. Некоторые редакторы могут добавлять спецификацию в начало файлов - это может повредить вывод сценария - вам следует сохранитьфайлы без спецификации.
  2. strlen и другие строковые функции могут работать не так, как вы ожидаете - вы должны использовать многобайтовые строковые функции для длины строки и т. д .: http://php.net/manual/en/book.mbstring.php
  3. регулярное выражение требует, чтобы для работы с вами использовался модификаторсимволы Юникода.
  4. при работе с файлами следует соблюдать осторожность - обратите внимание на текущую кодировку, поскольку, если файл не содержит спецификацию (см. # 1), редактор может открыть его в кодировке системы по умолчанию.
  5. некоторые инструменты исходного кода могут работать некорректно с файлами UTF8 (поскольку они не содержат спецификацию, но некоторые из них работают некорректно, даже если они есть в файлах).

Из моего опытаЯ могу сказать, что иногда лучше хранить строки в ресурсах (текстовые файлы или около того) и не использовать UTF8 в файлах кода, но такВременами все в порядке - это зависит от того, есть у вас проблемы или нет.

1 голос
/ 12 апреля 2013

Что мешает мне использовать Unicode для всех моих PHP-файлов?

Специальная кодировка может .Сам по себе PHP не обрабатывает ввод файлов конкретно, а только как двоичную последовательность.

Единственная кодировка Unicode, которая совместима с PHP на уровне исходного файла, - это UTF-8.

Takeстарайтесь не сохранять php-файлы с UTF-8-BOM.PHP обрабатывает его как стандартный текст и выводит его, потому что он находится перед открывающим тегом <?php:

{UTF8-BOM}<?php

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

1 голос
/ 16 апреля 2011

Что такое «кодировка Unicode»?

Unicode - это набор символов; Есть много кодировок между Unicode и байтами, многие из которых отображают только подмножество возможных символов.

Когда вы хотите использовать не-ASCII символы Unicode в PHP-скрипте, обычно лучшим вариантом кодировки является UTF-8, так как это кодировка ASCII-надмножества (т. Е. Нижние 128 значений каждого байта всегда означают стандарт Символы ASCII), которые все еще могут представлять любой символ Unicode. PHP, как и многие другие байт-ориентированные инструменты, может надежно работать только с кодировками ASCII-надмножеств.

Если под «кодировкой Unicode» вы имеете в виду то, что Notepad и другие инструменты Windows называют «Unicode», это совсем другое предложение. Это вводящее в заблуждение название для того, что правильно известно как кодировка UTF-16LE. Это кодирование имеет ширину в два байта на единицу кода, что означает, например, что нормальные символы ASCII выходят с нулевыми байтами между ними. Это не ASCII-надмножество, поэтому PHP и другие инструменты, основанные на байтах, не могут ничего с этим сделать напрямую.

При сохранении сценариев в редакторах на базе Windows обратите внимание на сохранение в UTF-8 (без спецификации) и обслужите свои страницы кодировкой UTF-8 Content-Type. Хотя это стандартное представление в памяти для Windows, Java и JavaScript, UTF-16LE практически не используется для хранения файлов или обслуживания веб-страниц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...