- ベストアンサー
[PHP+MySQL] EUCで動作しているMySQLのデータをShift-JISで表示させる方法
- PHPとMySQLを使用して携帯向けのコンテンツを作成している場合、MySQLがEUCで動作しているため、Shift-JISで保存した情報が文字化けしてしまうことがあります。しかし、サーバーの環境上でMySQLの文字コードを変更することはできません。そのため、エンコードコマンドを使用してもうまくいかない場合は、SQLで取得した行を一括でエンコードする方法を試すことができます。
- MySQLがEUCで動作しているため、PHPでShift-JISで保存した情報が文字化けしてしまう場合、サーバーの環境上でMySQLの文字コードを変更することはできません。代わりに、SQLで取得した行を一括でエンコードする方法を試すことができます。エンコードコマンドを使用してもうまくいかない場合は、他の方法を試してください。
- PHPとMySQLを使用して携帯向けのコンテンツを作成している場合、MySQLがEUCで動作しているため、Shift-JISで保存した情報が文字化けしてしまうことがあります。サーバーの環境上でMySQLの文字コードを変更することはできませんが、SQLで取得した行を一括でエンコードする方法を試すことができます。エンコードコマンドを使用してもうまくいかない場合は、他の方法を試してください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
実際にやっているのですが、 携帯用の出力HTMLの全てを変数にいれて、 最後に print mb_convert_encoding($html, "SJIS", "EUC"); でエンコードしています。 他の方法を試しましたが、なぜかSJISを吐き出してくれなかったので・・・
その他の回答 (3)
- taaaaaaa
- ベストアンサー率38% (31/80)
PHPはサーバによって設定などで利用制限があるようです。 ちなみに今利用しているサイトは、 文字コードを指定する場合、PHP文の一番上に <? header("Content-type: text/html; charset=Shift_JIS"); ?> と記述。 とあります。 他のサイトでも一番上に~~~を記述。 PHPの拡張子は.cgiにすべし。 などありました。 サイト運営会社へ問い合わせてみるしかないように思います。 mb_convert_encodingが使えるかどうかも含めて。
- galluda
- ベストアンサー率35% (440/1242)
がると申します。単純に文字コードを合わせればよいと思うのですが、いかがでしょうか? > PHPをShift-JISで保存しても という発言からすると、コードの中にHTMLが書いてあるかと思うので(一応念のため。もし業務で作られているなら、コード中にHTMLがあるのはお勧めも歓心もできません)。 DBから取得した情報を、一度 $shift_jisに変換されたデータ = mb_convert_encoding(MySQLで取ってきたデータ , "SJIS", "auto"); という感じで文字コード変換すればよろしいかと思います。
- fire--
- ベストアンサー率49% (146/293)
やり方はいろいろあるので1例です。 以下のようにしてやれば、このphpがEUC-JPであっても 出力をsjisに出来ますよ。 <?php mb_http_output('SJIS'); ob_start('mb_output_handler'); echo ' <html> <head> <title>あああmobile</title> </head> <body> いうえお </body> </html> '; ?>