【PHP】imagettftextの日本語文字化け

[PR] 記事内には広告が含まれています。

UTF8で指定しておくと生成されたイメージが文字化けする。

http://serika.blog.abk.nu/0839
より参照させていただきました。

imagettftextはUTF-8で文字列を渡す必要があります.そのため,mb_convert_encoding($str, ‘UTF-8’)などであらかじめエンコードしておく必要があります.

$str = 'ほげほげ';
$str = mb_convert_encoding($str, 'UTF-8');
imagettftext($image, 10.5, 0, 0, 0, $color['black'], $font, $str);

が,[JIS-mapped Japanese Font Support]がサポートされている時は,内部で勝手にエンコードを変換してくれるため,エンコードしておく必要はありません.というより,’UTF- 8’でエンコード済みの文字列を渡すと化けます.なので,文字列が’UTF-8’の場合,意図的に’SJIS’に変換してから渡す必要があります.

$str = 'ほげほげ';
$str = mb_convert_encoding($str, 'SJIS');
imagettftext($image, 10.5, 0, 0, 0, $color['black'], $font, $str);

この[JIS-mapped Japanese Font Support]ですが,gd_info関数で組み込まれているが調べることができます.

$info = gd_info();
if($info['JIS-mapped Japanese Font Support']){
// 組み込まれている
}