Файл PHP4 скрипта и UTF-8

Gigahard

Новичок
Файл PHP4 скрипта и UTF-8

Для дальнейшего развития проекта, возникла надобность переноса кодировки windows-1251 в кодировку utf-8. С одной стороны все выглядело достаточно простым: пересохранить все файлы в кодировке utf-8 и поменять в метаданных тип кодировки.
Но возникли проблемы...
К примеру, PHP4 скрипты написаные в utf-8 кодировке не всегда корректно работают. В частности перестала работать графическая библиотека GD.

Вот простой скрипт, который работает, если файл сохранен в кодировке cp1251 и не работает, если сохранен в utf-8:

PHP:
<?
$sample= ImageCreateTrueColor(100, 100);

header("Content-type: image/png");
imagePNG($sample);
imageDestroy($sample);
?>
Не думал, что переход из одной кодировки в другую, будет столь непрост... В связи с этим несколько вопросов...
Какие будут соображения насчет работоспособности GD с utf-8?
Поддерживает ли в принципе PHP4 написание скриптов на utf-8?
Есть ли смысл переходить на последнюю версию PHP? Например на php5? Насколько он адаптирован к utf-8?
 

Gigahard

Новичок
Автор оригинала: 440hz
вранье.
http://440hz.ru/trash/utf8/

не рекламы ради php.ru весь на utf-8 И все пашет как часы.
Я не берусь что то утверждать, я всего лишь описываю свою ситуацию и прошу совета в решении данной проблемы. Возможно у меня старая версия PHP, но вроде как хостер постоянно держит свежие, но и у него данный пример не работал... Так что прежде чем писать суппорту в хостинг и менять у себя PHP, я хотел выяснить причину неработоспособности скрипта...
Какие могут быть потенциальные косяки с написанием PHP скриптов на utf-8?
 

Gigahard

Новичок
440hz
Вроде как для работы с юникод строками можно использовать аналоги функций с префиксом mb_...

phprus
Читал еще до обращения в форум... BOM имет отношение только к utf-16 юникоду... К utf-8 это неприменимо... Для эксперимента пользовал два utf-8 редактора. Собственно Notepad с сохранением в формате utf-8 и специализированный юникод редактор unipad с сохранением тоже в utf-8.
Результат выполнения такого скрипта плачевный :(
Я уже начинаю склоняться, что это все же проблема версии PHP или GD.

P.S. Тестирую на PHP модуле для апача. Версия PHP 4.3.10, версия встроенного GD, 2.8.
 

phprus

Moderator
Команда форума
Gigahard
1) Да нужно использовать mb_-функции, правда им в качестве параметра надо передавать кодировка текста который они обрабатывают.

2) Ну я же просил прочитать. И даже ссылку дал, а ты не послушал и еще бред написал про то, что в utf-8 BOM нет и про то что он есть только в utf-16.
Привожу цитату:
Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:
UTF-8
EF BB BF
UTF-16BE
FE FF
UTF-16LE
FF FE
UTF-32BE
00 00 FE FF
UTF-32LE
FF FE 00 00
 

Gigahard

Новичок
Ну я ответил, только то, что написано там же выше... Порядок байтов к utf-8 не применим... Это если подразумевалось, что в порядке дело...

Но тем не менее спасибо! Отключил в редакторе BOM и все заработало!
 

SiMM

Новичок
Если бы был включен вывод ошибок и отключен output_buffering - такого вопроса бы в принципе не было.
 
Сверху