人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpのincludeを使って外部ファイルを読み込もうとしています。

例:
<?php
include_once ('http://www.xxx.com/inc.php');
?>

出力元のエンコードはUTF-8で読込先のエンコードはShift-jisなんですが、上記のままでは文字化けしてしまいます。エンコードを読込先に合わせるにはmb_convert_encodingとかを使うと思いますがどのように記述したら良いでしょうか?
(ソースを希望します)
よろしくお願いします。

●質問者: harakiri2
●カテゴリ:インターネット ウェブ制作
✍キーワード:JIS PHP UTF-8 エンコード ソース
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● okuryu
●35ポイント

読み込み先に合わせるということは Shift_JIS で出力するということですよね。

次のような感じでどうでしょうか。

<?php

include_once 'http://www.example.com/inc.php';

$str = mb_convert_encoding($str, 'SJIS', 'UTF-8, SJIS');

echo $str;

?>

PHP: mb_convert_encoding - Manual

◎質問者からの返答

ん?、ダメです。文字化けしたままです…。


2 ● okuryu
●35ポイント

header 関数で content-type を指定してもだめですか?

<?php

header('content-type:text/html;charset=Shift_JIS');

// 省略

?>
◎質問者からの返答

先述の方法をローカルで試したところ、

問題なくincludeされましたが、

読込もうとしているアプリケーション側では

文字化け解消されませんでした。

もう少し自分で検討してみます。

ありがとうございます。


3 ● kurukuru-neko
●10ポイント

むりやり

例:

 <?php
 $file=file_get_contents("http://xxx/inc.php");
 $file = mb_convert_encoding($file,"SJIS","UTF8");
 echo "--- read data ---\n";
 echo $file;
 echo "eval read data ---\n";
 eval( "?>\n".$file."\n<?php\n");
 ?>

サーバーで xxx.php実行された結果が入力ファイル

になる可能性があるかも?


4 ● kurukuru-neko
●10ポイント

間違って逆に変換かも?

>出力元のエンコードはUTF-8で

例のPHPがincludeする側のPHPでUTF-8

>読込先のエンコードはShift-jis

例のPHPがincludeする先のサーバ上のPHP文字コードがSJIS

だと

$value = mb_convert_encoding($value,'UTF-8','SJIS');

逆だと

$value = mb_convert_encoding($value,'SJIS','UTF-8');

それとも上記のinclude_onceは

外部のPHPの結果を取得したいだけであれば

evalは不要かな。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ