Что такое «кодировка 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 практически не используется для хранения файлов или обслуживания веб-страниц.