входная кодировка текста imagettftext()

Trianon

Новичок
входная кодировка текста imagettftext()

Есть ли какой-либо простой и надежный способ заставить imagettftext() принимать данные в кодировке UTF-8 без попыток выполнить декодирование html_encodings?
 

Trianon

Новичок
cDLEON> iconv ?
У меня строка с текстом уже в utf-8.

WP> Покури FAQ.
FAQ не дает ответа на этот вопрос.

Я , конечно, могу за'htmlencod'ить её насильно, дабы убрать неоднозначности.
Но как-то неохота гонять кодировки туда сюда.
Ясно же, что imagettftext выполнит обратное преобразование.
 

SiMM

Новичок
> Я , конечно, могу за'htmlencod'ить её
А зачем? Не понимаю проблему.
PHP:
<?php
header ("Content-type: image/gif");
$im = imagecreate (400, 30);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
imagettftext($im, 20, 0, 10, 20, $white, "arial.ttf", iconv("CP1251","UTF-8","Проверка"));
imagegif($im);
imagedestroy ($im);
?>
отображает ожидаемое "Проверка"

-~{}~ 13.08.07 15:01:

[m]imagettftext[/m]
Strings in UTF-8 encoding can be passed directly.
 

Trianon

Новичок
cp1251 тут совсем не при чем. Все данные уже в UTF-8

Представьте, захотелось мне вывеcти в графике семь следующих символов &amp;#1071;

Так вот, я хочу видеть амперсенд решетку четыре цифры и точку с запятой. А не букву Я.

Strings in UTF-8 encoding конечно же can be passed directly, но лишь до тех пор, пока в них не встретятся html-кодированные символы. Потому что дальше эта зараза начинает заниматься вольной интерпретацией. А я хочу детерминированного поведения.

А все из-за
May include decimal numeric character references (of the form: &amp;#8364; ) to access characters in a font beyond position 127.


Updated...
В прнципе, наверное достаточно заменить лишь амперсенд. Только всё равно как-то через зад...
 

SiMM

Новичок
> cp1251 тут совсем не при чем.
Разве я утверждал обратное?
> Все данные уже в UTF-8
Простите, а в моём примере в imagettftext данные в каком-то другом формате передаются?
> Представьте, захотелось мне вывеcти в графике семь следующих символов &#1071;
Надо ж было так вопрос задать, чтобы никто его не понял.
> Только всё равно как-то через зад
htmlspecialchars не менее через зад.

-~{}~ 13.08.07 23:57:

Да и не работает, на проверку.

-~{}~ 13.08.07 23:58:

так что заменяйте & на &amp;#38;
 

cDLEON

Онанист РНРСlub
Ээээ. Если вы называете ХТМЛмнемоники УТФ-ом, то я пасс.
 

Trianon

Новичок
SiMM
>> cp1251 тут совсем не при чем.
>Разве я утверждал обратное?
Прямо - нет.

>> Все данные уже в UTF-8
>Простите, а в моём примере в imagettftext данные в каком-то другом формате передаются?
Простите, но Вы же не будете спорить с тем, что чтобы Ваш пример оказался актуальным, его исходный текст необходимо поместить в файл в кодировке cp1251?

>> Представьте, захотелось мне вывеcти в графике семь следующих символов &#1071;
>Надо ж было так вопрос задать, чтобы никто его не понял.
С удовольствием послушаю Вашу формулировку.
Реалия такова, что на имя imagettftext() все тут же начинают по привычке делать стойку как на вопль " а у меня кракозябры в графике!", а читать вопрос прямо никому в голову не приходит.

>> Только всё равно как-то через зад
>htmlspecialchars не менее через зад.
>Да и не работает, на проверку.
Что не удивляет, в общем-то.

>так что заменяйте & на &amp;#38;
Да. Вероятно, это будет самым надежным и переносимым.

-~{}~ 14.08.07 09:38:

cDLEON
>Ээээ. Если вы называете ХТМЛмнемоники УТФ-ом, то я пасс.
Я такого не называл.
Но Вы, пожалуй, все равно пасс, благо всё что можно было, уже выяснили.
 

SiMM

Новичок
> Простите, но Вы же не будете спорить с тем, что чтобы Ваш пример оказался актуальным, его исходный текст необходимо поместить в файл в кодировке cp1251?
А какое это имеет отношение к тому, что поступает на вход imagettftext?

> С удовольствием послушаю Вашу формулировку.
Код
PHP:
imagettftext($im, 20, 0, 10, 20, $white, "arial.ttf","&#1071;");
выводит букву Я, в то время как мне нужно &amp;#1071;
Как заставить функцию imagettftext работать нужным мне образом?

Правда, откровенно говоря, задавать подобный вопрос считаю глупостью, ибо ответ вполне по силам получить самостоятельно чтением документации.
 
Сверху