ホームページ  >  記事  >  バックエンド開発  >  PHP の GD 関数 imagettftext() はデフォルトの文字エンコーディングに注意する必要があります_PHP チュートリアル

PHP の GD 関数 imagettftext() はデフォルトの文字エンコーディングに注意する必要があります_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:37:37779ブラウズ

私たちは最近、メンバー情報に基づいてテキスト付きの画像を自動的に生成する、パーソナライズされたフォーラムの署名に似た小さな機能を開発しています。画像の結合は imagecopy() や imagecopyresampled() などの関数を使用して行うことができますが、テキストを描画する場合には問題が発生します。テキスト テンプレートはテキスト ファイルに保存されます。プログラムはまずファイルを読み取り、その中の変数をデータに置き換えます。次に、imagettftext() 関数を使用して画像上に描画します。@_@ 残念ながら、描画された画像は文字化けします。 ...そこで、Google で関連する問題を検索したところ、imagettftext() 関数で渡される文字列は UTF-8 でエンコードする必要があるとほとんどの人が言っており、公式の PHP マニュアルにも「UTF-8 でエンコードされた文字列」と明記されていることがわかりました。 「直接渡せる」のですが、問題はテンプレートファイルのエンコードが元々UTF-8になっており、少々不可解です。困ったので、EmEditor で元のテンプレートファイルを開き、別のエンコードに変換して、GD が出力した文字化けしたコードと比較してみたところ、EUC-JP エンコードに変換すると文字化けしたコードと一致することが分かりました。 GD による出力...つまり、ここのサーバー上の GD のデフォルトのエンコーディングは EUC-JP であり、これは日本語エンコーディングです。 php.ini の設定を検索しましたが、関連するオプションが見つからなかったので、このデフォルトのエンコーディングはどこに設定されているのかという別の疑問が生じました。 PHP のコンパイル パラメータに非常に疑わしい「--enable-gd-jis-conv」パラメータがあることを発見したのは、Si Wen の弟 Niu でした。Google は、このコンパイル パラメータに関連する多くの文字化けの問題を発見しました。パラメータの説明 「GD: JIS マップされた日本語フォントのサポートを有効にする」です。これは、GD が日本語でエンコードされたフォントをサポートすることを意味します (くそー、なぜ中国語でエンコードされたフォントをサポートするコンパイル オプションがないのですか...PHP も区別しますか) Nationality = =b)、率直に言えば、これを有効にします。このオプションが有効な場合、GD は、TTF フォントの 127 を超える部分 (つまり、標準のラテン フォントに属さない部分) をマップします。すると、中国語フォントのマッピングに使用すると、当然文字化けします。面倒な作業はせずに、このオプションを削除して再コンパイルすると、問題は解決します。このオプションを削除すると、imagettftext() のデフォルトのエンコーディングが UTF-8 になり、中国語が正常に表示されるようになります~

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486556.html技術記事私は最近、メンバー情報に基づいてテキストを含む画像を自動的に生成する、フォーラムの個人署名に似た小さな機能を開発しています。画像のステッチングは imagecopy() と...を使用します
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。