プロが教えるわが家の防犯対策術!

こんにちは。

PHPとMySQLで携帯向けのコンテンツを作成しています。

携帯ではShift-JISしか表示されないということを・・・今知り、パニックになっています。

というのは、MySQLがEUCで動作している為、いくらPHPをShift-JISで保存しても、DBから引いてきた情報は文字化けしてしまうのです・・・。

では、MySQLの文字コードを変更すれば?ということになるのですが、サーバーの環境上、それを変更することが出来ません。

どうすればいいのでしょうか・・・。
エンコードコマンドも調べたのですが、うまくいかず。
出来れば、SQLで取ってきた行を一括でエンコード出来る方法があれば助かりますが、その他の方法でも結構です。

とにかく、今の環境で携帯サイトを文字化けなく表示する方法をご教授下さい。

宜しくお願い申し上げます。

A 回答 (4件)

実際にやっているのですが、


携帯用の出力HTMLの全てを変数にいれて、
最後に
print mb_convert_encoding($html, "SJIS", "EUC");
でエンコードしています。
他の方法を試しましたが、なぜかSJISを吐き出してくれなかったので・・・
    • good
    • 0

PHPはサーバによって設定などで利用制限があるようです。



ちなみに今利用しているサイトは、
文字コードを指定する場合、PHP文の一番上に
<?
header("Content-type: text/html; charset=Shift_JIS");
?>
と記述。

とあります。

他のサイトでも一番上に~~~を記述。
PHPの拡張子は.cgiにすべし。

などありました。
サイト運営会社へ問い合わせてみるしかないように思います。
mb_convert_encodingが使えるかどうかも含めて。
    • good
    • 0

がると申します。

単純に文字コードを合わせればよいと思うのですが、いかがでしょうか?
> PHPをShift-JISで保存しても
という発言からすると、コードの中にHTMLが書いてあるかと思うので(一応念のため。もし業務で作られているなら、コード中にHTMLがあるのはお勧めも歓心もできません)。
DBから取得した情報を、一度
$shift_jisに変換されたデータ = mb_convert_encoding(MySQLで取ってきたデータ , "SJIS", "auto");
という感じで文字コード変換すればよろしいかと思います。
    • good
    • 0

やり方はいろいろあるので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>
';
?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!