PHP-GD текстовое отображение на японском языке странно - PullRequest
0 голосов
/ 13 сентября 2010

Наконец мне пришлось перекомпилировать PHP с --enable-gd-jis-conv. Однако на японском языке текст отображается неправильно.

$text = '夏の天気';
$fontfile = '/usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf';

return imagettftext ($image, $size,  $angle,  $x,  $y,  $color, $fontfile, $text);

Но вместо этого отображаются другие кандзи (японские символы) (очень разные, выглядят как китайские).

Может ли быть проблема с кодировкой?

Использование PHP 5.3.3 на RHEL 5.4.

Ответы [ 3 ]

2 голосов
/ 13 сентября 2010

Что ж, японский язык как многобайтовый кодированный язык имеет немало причуд.Прежде всего, убедитесь, что на вашем сервере установлен модуль mbstring.

Во-вторых, чтобы уменьшить вероятность возможного сбоя на полпути, постарайтесь обеспечить согласованность всех кодировок на вашем сайте / проекте: представления сайта и исходные файлы должныв идеале должно быть написано с той же кодировкой.

Специально для вашей проблемы, вы можете попробовать использовать следующие функции:

mb_http_input http://www.php.net/manual/en/function.mb-http-input.php

Эта будетубедитесь, что ваш HTTP-ввод правильно закодирован (т.е. данные формы).

mb_ internal_ encoding http://www.php.net/manual/en/function.mb-internal-encoding.php

Устанавливает внутреннюю кодировку, используемую PHP.

mb_regex_encodinghttp://www.php.net/manual/en/function.mb-regex-encoding.php

Устанавливает кодировку, используемую PHP для регулярных выражений.

mb_convert_encoding http://www.php.net/manual/en/function.mb-convert-encoding.php

Для преобразования строк.

mb_convert_variables http://www.php.net/manual/en/function.mb-convert-variables.php

Преобразует кодировки целого пакета строк / массивов.

Редактировать : кроме того, из имени модуля вы можете попробовать передать закодированный JISданные для функции.

1 голос
/ 13 сентября 2010

Мне пришлось запустить это, чтобы заставить его работать

$text = mb_convert_encoding('夏の天気', "SJIS", 'UTF-8');
0 голосов
/ 31 июля 2011
imagettftext($this->im, 58, 0, 50, 100, $text_color, $font, mb_convert_encoding('佳人', 'UTF8', 'UTF-8'));

Это сработало для меня. Кажется, работает через несколько разных японских шрифтов.

...