みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

UTF8のPHPにSJISのPHPを組みこむ方法?

charset=UTF-8で動作するPHPファイルがあります。
******************
UTF-8で動作するPHP
******************
<?php
・・・・・・・・
header("Content-type:text/html;charset=UTF-8");
?>
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; UTF-8">
<title><?=$API_NAME?></title>
</head>
・・・・・・・・・・
・・・・・・・・・・
</html>

のような形です。

一方、SJISで動作する下記のPHPがあります。

このS_JIS PHPを上記のUTF-8PHPの中の</head>と</html>の間に組み込みたいと思います。
下記のPHPは、data.csvからファイルの中身を表示させるPHPですが、そのまま放り込むと
文字化けしてしまいます。
(下記のPHP単体だと正しく表示されます。charset=UTF-8下で文字化けします)

data.csvの文字コードをUTF-8にする。LF にするなど試してみましたが文字化けしたままでした。
また、#include <string.h>の下に
mb_convert_encoding($string, 'utf8', 'sjis');
を入れてみましたが文字化けは直りませんでした。

お手数ですが下記のPHPをUTF8上で正しく表示させる方法が分かりましたらご教授願います。


******************
SJISで動作するPHP
******************
<?
#include <string.h>
// CSV ファイルを読み込み、$data配列に格納
$handle = fopen("data.csv", "r");
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ( strcmp( $row[0] , '110' ) == 0 ) {
$data[] = array( 'shop'=>$row[0] ,'priceA'=>$row[1], 'priceB'=>$row[2], 'place'=>$row[3] );
}
}
fclose($handle);
// 列方向の配列を得る
foreach ($data as $key => $row) {
$shop[$key] = $row['shop'];
$priceA[$key] = $row['priceA'];
$priceB[$key] = $row['priceB'];
$place[$key] = $row['place'];
}
// 結果の表示
for( $i=0 ; $i<count( $data ) ; $i++ ) {
print "$shop[$i] $priceA[$i] $priceB[$i] $place[$i]<br>\n";
}
?>

投稿日時 - 2010-12-27 22:15:34

QNo.6411117

困ってます

質問者が選んだベストアンサー

どこでやってもいいですが、最後の

 // 結果の表示
 for( $i=0 ; $i<count( $data ) ; $i++ ) {
  print "$shop[$i] $priceA[$i] $priceB[$i] $place[$i]<br>\n";
 }

の中で、文字エンコード変えてやればよいだけでは、

 for( $i=0 ; $i<count( $data ) ; $i++ ) {
  $shop[$i] = mb_convert_encoding($shop[$i],"UTF-8","SJIS");
  print "$shop[$i] $priceA[$i] $priceB[$i] $place[$i]<br>\n";
 }

投稿日時 - 2010-12-28 14:20:30

お礼

ご回答ありがとうございます。
試行錯誤していたため返答が遅くなりましたことをお詫び致します。
ご提案頂いた方法ではだめでした。
ご提案をもとに、さらにいろいろ試したのですが、やはり文字化けは直りません。
ご回答いただけましたことを御礼申し上げます。

投稿日時 - 2010-12-31 07:27:32

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問