2010-09-13 14 views
0

Enfin, j'ai dû recompiler PHP avec --enable-gd-jis-conv. Cependant, l'affichage du texte est erroné, en japonais.Affichage de texte PHP-gd en japonais est bizarre

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

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

Mais différents kanji (caractères japonais) sont affichés à la place (très différents, ressemble chinois).

Cela peut-il être un problème d'encodage? Utiliser PHP 5.3.3 sur RHEL 5.4.

+0

Quel est votre encodage d'entrée et quelle est la configuration de votre entrée de serveur? Comme le japonais peut utiliser plusieurs types de codage (EUC, JIS, SJIS, UTF8) –

+0

En utilisant UTF-8, 'mb_internal_encoding ('UTF-8')'. L'entrée est faite à partir d'Emacs utf8 codé. –

Répondre

1

je devais courir pour ce faire fonctionner

$text = mb_convert_encoding('夏の天気', "SJIS", 'UTF-8'); 
2

Eh bien, le japonais en tant que langage codé multi-octet a quelques bizarreries. Tout d'abord, assurez-vous que le module mbstring est installé sur votre serveur. Deuxièmement, afin de réduire les risques de casse possible à mi-chemin, essayez de garder tous les encodages de votre site/projet cohérents: les vues de site et les fichiers sources devraient idéalement être écrits avec le même encodage.

Plus précisément pour votre problème, vous voudrez peut-être essayer d'utiliser les fonctions suivantes:

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

Celui-ci va vous assurer que votre entrée HTTP est codé correctement (par exemple des données de formulaire.).

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

Définit le codage interne utilisé par PHP.

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

Définit l'encodage utilisé par PHP pour regexes.

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

Pour la conversion chaîne.

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

Converti encodages d'un lot de chaînes/tableaux.

Modifier: en plus, du nom du module, vous pouvez essayer l'alimentation des données codées JIS à la fonction.

+0

Afin de se concentrer sur les tests * gd * et d'éviter d'autres effets secondaires, le texte est actuellement entré directement dans le code php (夏 の 天 気). Le 'mb_internal_coding ('utf-8')' est défini au début. Il doit y avoir quelque chose de simple manque - peut-être la police est erronée?(sur un système anglais RHEL, 'yum install fonts-japanese'). –

+0

Merci pour votre contribution –

0
imagettftext($this->im, 58, 0, 50, 100, $text_color, $font, mb_convert_encoding('佳人', 'UTF8', 'UTF-8')); 

Cela a fonctionné pour moi. Semble travailler sur quelques polices japonaises différentes.

+1

@NR s'il vous plaît vérifier la réponse - n'est-ce pas la même chose? –