dポイントプレゼントキャンペーン実施中!

はじめましてmaniと申します。
どうしても解消できない問題があった為みなさんにお聞きさせていただきたいと思い質問させていただきました。

私はPHPは初心者なのですが、現在、PHPを用いてAPIから取得した情報を表示させるサイトの構築をしています。
現在APIからの取得した情報を
UTF-8
という文字情報で取得していますが、
現在作成しているサイトはPHPで
シフトJIS
で表示されています。
当然の事ながらAPIから取得した情報を表示させると取得した情報が文字化けしてしまいます。
エンコードからUTF-8に文字コードを変更させた場合取得した情報は文字化けしませんが作成したサイトの日本語が文字化けしてしまいます。

メタなどいろいろな方法を試したのですがどうしても解消できないため、大変困っています。
よろしければ文字化けを解消し、すべてが綺麗に表示できる方法を教えていただけるとありがたいと思います。

A 回答 (2件)

どのようにしてAPIを取得しているか解らないのですが、取得した時点でエンコードを変更してしまえばいいのではないでしょうか。



PHPを書いているエンコードであれば

$api_data = get_api();
$api_data = mb_convert_encoding($api_data, "SJIS", "UTF-8);

のようにするとAPIから取得したデータの文字コードがSJIS(Shift_JIS)に変換されます。

参考URL:http://jp.php.net/manual/ja/function.mb-convert- …

この回答への補足

回答ありがとうございます!
しかし参考にさせていただきいろいろ試したのですが、文字化けしてしまいます(><)
私がプログラムを載せ忘れてしまった事で回答しずらかったのではと思います。申し訳ありません

ini_set("mbstring.internal_encoding","UTF-8");
プログラムがutf-8で書かれていることを初めに宣言し、

$req = "http://~~"
で情報を要求しています。

$xml = simplexml_load_file($req)
or die("XMLパースエラー");
そこから一度$xmlへ格納し

その後表示をしております。

よろしければお手数ですがここからわかる事があれば、またご教授よろしくお願いいたします。

補足日時:2007/06/06 09:43
    • good
    • 0

サイトのソース自体の文字コードをutf-8にしてしまうのはどうでしょう?結構こまごました作業が必要になるかもしれませんが・・・。




APIで取得した部分をiframe内部で表示するようにして、そのiframe表示部分の文字コードをutf-8にするという方法もあります。これならいままでどおりs-jisでもおっけいかと存じますが、frame使用は一般的にはあまりお勧めされないような気もします。

この回答への補足

申し訳ありません!
必死になりすぎ回答が遅れてしまいました。
参考にさせて頂きました!

本当にありがとうございます。
本当に申し訳ありません。

補足日時:2007/07/13 01:43
    • good
    • 0

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