Эта тема на forum.dklab.ru


Slp: Перевод всего ПО сервера на кодировку utf-8
Если задумка перевести все ПО (apache, php, mysql) на сервере на кодировку utf-8.
Но слышал (давно) что php не может работать с кодировкой utf-8, хотелось бы услышать ваши соображения по этому поводу и советы по переводу все на utf-8.
Миша Спларов:
Может: http://php.net/mbstring, http://php.net/iconv
Slp:
вообщем расскажу подробнее...
перевод всего оборудования связан с тем что:
сервер должен будет получать только xml-документы от клиента, который выполнен на flash
оба любят кодировку uft-8, и не есть гуд пользоваться перекодировщиками.
есть ли средство поставить по-дефолту у php кодировку utf-8, и знать что он (php) точно оперирует этой кодирвкой а не другой.

ПО которое установленно на сервере:
MySQL 4.1
Apache 2.0.55
PHP 5.1.1
// php работает как модуль apache
Миша Спларов:
Slp
Нет, нельзя. Нужно явно использовать функции для работы с UTF-8, если предполагается работа со строками. Стоит заметить, что если к PHP поступют данные в UTF-8, то их ессна не нужно переконвертировать - они и так в UTF-8.
Антон Макаренко:
нельзя
внутри скрипта можно, afaik:


есть ли средство поставить по-дефолту у php кодировку utf-8, и знать что он (php) точно оперирует этой кодирвкой а не другой.


Если будете пользоваться библиотеками iconv и/или multibyte string, то средства найдутся и в первой и во второй:
http://ua2.php.net/manual/en/function.iconv-set-encoding.php
http://ua2.php.net/manual/en/function.mb-internal-encoding.php
Миша Спларов:
Антон Макаренко
Она же будет не у PHP по-умолчанию. Т.е. я не смогу написать $strlen=strlen($utf8string);
Именно это я и имел ввиду.
Slp:
ок, спасибо...
вопрос только в одном, нужно ли файлы *.php сохранять в utf8 или можно оставить другую кодировку?
Миша Спларов:
Slp
Если в файлах будет текст для вывода в браузер, то ессна нужно в UTF-8.
Slp:
хм... а что если сохранять все в uft8, перекодировщки тогда уже будут не нужны, т.к. данные в php поступают в кодировке uft8 от флеша и mysql тоже настроить на utf8 и все... или здесь еще есть подводные камни?
Миша Спларов:
Slp
О камнях вроде-бы уже оговорено выше.
mot:
Антон Макаренко
Она же будет не у PHP по-умолчанию. Т.е. я не смогу написать $strlen=strlen($utf8string);
Именно это я и имел ввиду.
А как насчёт overloading'a? См. mbstring.func_overload в php.ini.
Миша Спларов:
А как насчёт overloading'a? См. mbstring.func_overload в php.ini.
От части проблему решает - далеко не для всех строковых функций.
mot:
А как насчёт overloading'a? См. mbstring.func_overload в php.ini.
От части проблему решает - далеко не для всех строковых функций.
Для самых общеупотребимых - решает. Я вижу проблемы только с функциями из библиотеки PCRE, да и их при желании можно решить.
P.S. В своём примере вы вообще привели "невозможность использования" strlen для строк utf-8 кодировки.
Миша Спларов:
mot
У pcre есть модификатор "u".

Эта тема на forum.dklab.ru