У меня есть веб-сайт, который работает в Windows и использует cp1252 (aka Win-1252 ), чтобы он отображал испанские символы.  Приложение создает некоторые графики с помощью JpGraph 2.3 .  Эти сюжеты используют семейство шрифтов Tahoma Open Type для отображения текстовых меток.  Строки предоставляются в ANSI (т.е. cp1252), а файлы шрифтов поддерживают cp1252 (фактически, файлы * .ttf были скопированы из папки шрифтов системы). 
Он отлично работает в нескольких настройках от PHP / 5.2.6 до PHP / 5.3.0. Проблемы начались, когда я запускал приложение под PHP / 5.3.1 : все не-ASCII заменяются полым прямоугольником, который представляет отсутствующие или неизвестные символы.
Документация JpGraph не очень точно описывает, как она ожидает международных символов. По-видимому, текст обрабатывается внутри функцией imagettftext (), которая ожидает UTF-8. Однако, кодируя все, поскольку UTF-8 разбивает приложение во всех системах. Если ANSI работает нормально, я получаю неправильные символы ( Ê вместо Ú ). Там, где я получил недостающие символы, теперь я получаю ошибку PHP:
Предупреждение: imagettftext (): any2eucjp (): что-то происходит
Есть ли у вас какие-либо сведения о том, что изменилось в GD2 с PHP / 5.3.0 до 5.3.1, что может повлиять на рендеринг на не-ASCII-символах? Как я ожидаю, чтобы кормить JpGraph со строками в кодировке Win-1252?
Наконец, проблема не связана с JpGraph. Я могу воспроизвести проблему с простым вызовом imagettftext ():
 <?php $im = imagecreatetruecolor(400, 30); $white = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 399, 29, $white); //$text = 'áéíóú ÁÉÍÓÚ'; # ANSI $text = utf8_encode('áéíóú ÁÉÍÓÚ'); # UTF8 $font = '/path/to/tahomabd.ttf'; imagettftext($im, 15, 0, 10, 25, $black, $font, $text); header('Content-Type: image/png'); imagepng($im); imagedestroy($im); ?> 
  В PHP / 5.3.0 оба ANSI и UTF-8 отображают правильный текст.  В PHP / 5.3.1 ANSI отображает неправильные символы, а UTF-8 запускает any2eucjp(): something happen внутренней ошибке.  Я бы посмел сказать, что я ударил ошибку …