フォームから送信されたShift-jisの文字列をUTF-8に変換して、ImageTTFText関数を使用して画像として表示させようとしているのですが、文字化けをしてしまって困っています。
入出力はShift-jisで、内部処理はUTF-8で行いたくて色々実験してみたのですが、どうにもうまくいきません。
以下にソース・環境を載せますので、どなたか、間違いをご指摘いただけないでしょうか?
なるべくPHP.iniの設定は変えないで対処したいです。
どうか、よろしくお願いいたします。
【サーバのPHP.iniの設定(PHP ver.4.3.9)】
mbstring.detect_order = auto
mbstring.encoding_translation = off
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.internal_encoding = EUC-JP
mbstring.language = Japanese
【使用しているソース】
<?php
mb_language("ja");
mb_internal_encoding("UTF-8");
mb_http_input("SJIS");
mb_http_output("SJIS");
// 表示する文字列
$str = mb_convert_encoding($_GET["txt"], "UTF-8", "SJIS");
// 画像サイズ
define ( IMGWID, 300 );
define ( IMGHEI, 300 );
// フォントサイズ
define ( FONTSIZE, 20 );
// 文字のスタート位置
define ( START_X, 10 );
define ( START_Y, 50 );
// 生成画像
$img = imagecreatetruecolor ( IMGWID, IMGHEI );
// フォント色
$fntc = ImageColorAllocate ( $img, 255, 255, 255 );
// 使用するフォント
define ( FONTTYPE, '../font/DFKaiE.ttf' );
// フォントパスの設定
putenv ( 'GDFONTPATH='.realpath('.') );
$x = START_X;
$y = START_Y;
// 入力された文字を書き出し
ImageTTFText ( $img, FONTSIZE, 0, $x, $y , $fntc, FONTTYPE, $str );
header ( "Content-type: image/jpeg" );
ImageJpeg ( $img );
ImageDestroy ( $img );
?>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>mbstring.internal_encoding = EUC-JP
これだと画像を作る時の、fontの文字コード体系はEUC-JPになるんじゃないんですか?
以下の関数あたりで、fontの文字コード体系を変更できそう?
bool imagepsencodefont ( resource font_index, string encodingfile )
http://php.s3.to/man/function.imagepsencodefont. …
ps.default_encoding も確認した方がよいのかな
参考URL:http://php.s3.to/man/function.imagepsencodefont. …
この回答への補足
書き込みありがとうございます!
imagepsencodefont ( "UTF-8" );
とプログラムの最初に入力してみたのですが、うまくいきません。
マニュアルの方には例文のようなものがなかったので、使い方がいまいち分からなかったのですが、この関数はどういった指定をすればよろしいのでしょうか?
初歩的な質問になってしまい、申し訳ございません…。
No.1
- 回答日時:
表示された画像が文字化けするのでしょうか?
内部処理はUTF-8で行い、画像の表示だけSJISに戻してから
再度UTF-8に変換して内部処理を続けるという方法ではどうでしょうか
アドバイス程度ですいません
この回答への補足
書き込みありがとうございます!
表示された画像が文字化けしてしまうんです。
たとえば『あ』と入力すると『、「』という文字に変わってしまいます。
画像の表示だけSJISに戻すというのは、具体的にはどのタイミングで、どういったことをするのでしょうか???
かすかな期待を込めて
ImageJpeg ( $img );の前に
$img = mb_convert_encoding($img , "SJIS", "UTF-8");
を挿入してみたんですが、画像が表示されなくなりました…(^_^;)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Java VScodeのターミナルの文字化けについて 1 2022/09/27 22:19
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS CSSでサイトの背景に画像を組み込みたいのですが反映されません 2 2022/11/22 16:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
i18n_convert と mb_convert_e...
-
scandir関数取得結果の文字化け
-
$str=preg_replace('/\\u3000/'...
-
文字化け
-
index.phpに入るには、どうすれ...
-
onedrive にexcelファイルをア...
-
PHP postgreSQL(teraterm)を用...
-
フォントの色を変えるには?
-
【file_exists】ファイルが存在...
-
PHPで取得したHTML内のdiv要素...
-
メールフォームのタイトルが文...
-
.phpと.incファイルの違いはな...
-
php 完了画面の送信メールのコ...
-
3つ以上の論理積は利用可能なの...
-
VB.NET 最下位のディレクトリ名...
-
xamppでPHPのフォームからメー...
-
透過PNGが透過されない!!
-
ワードプレスサイト PHP8.0.25...
-
バッチを用いたフォルダの自動移動
-
CSV出力にHTMLが入ってしまう
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$str=preg_replace('/\\u3000/'...
-
mb_convert_encoding で?になる。
-
i18n_convert と mb_convert_e...
-
PHPの文字化けした文字だけ削除...
-
header("location~")をPOSTで...
-
ハシゴの「高」が「?」に置き...
-
mysql utf8、php・euc-jp で出...
-
phpのhex2binについてphpで、ut...
-
windowsXP、XAMPPでメーラーMer...
-
エンコーディングについて
-
PHPフォーム→PHP確認画面で...
-
データベースから取り出した日...
-
Content-Typeが機能していない?
-
POST文字列が化ける(外字)
-
scandir関数取得結果の文字化け
-
文字化け
-
【PHP】ファイル読み込みで...
-
phpMyFaqでの文字化けについて
-
XML出力時の日本語一部文字化け
-
urlencodeしていない日本語をPA...
おすすめ情報