phpで読み込んだcsvが文字化けします
PHPでCSVよ読み込んで名簿を作っています。
出力まではうまくいったのですが、なぜか一字だけ文字化けしてしまいます。(「務」→「冶」になってしまいます)
普段あまりプログラムはしないので、原因がわからず困りはてております。よろしくお願いいたします。
PHP部分の記述は以下になります。
―――――――――――――――――――――――――――――――――――
<?php
$fname = "csv/meibo.csv";
$file = fopen($fname, "r");
$nowrap = "nowrap=\"nowrap\"";
$tcent = "class=\"center\"";
$tbg = "class=\"even\"";
while (list($name, $post, $add, $add2, $tel, $http, $url, $mail) = fgetcsv($file, 1000, ",")){
$name = strtr($name, "﨑", "崎");
$add2 = strtr($add2, "﨑", "崎");
$tline ++;
if($tline % 2 == 0){
echo "<tr $tbg>\n";
}else{
echo "<tr>\n";
}
echo "<td $nowrap>$name</td>\n";
echo "<td $tcent>$post</td>\n";
echo "<td>$add<br />$add2</td>\n";
echo "<td $tcent>$tel</td>\n";
if($http == "http://"){
echo "<td $tcent><a href=\"$http$url\" target=\"_blank\"><img src=\"img/common/img_hp.gif\" alt=\"HPへ\" width=\"16\" height=\"16\" /></a></td>\n";
}
else
{
echo "<td $tcent> </td>\n";
}
echo "<td>$mail</td>\n";
echo "</tr>\n";
}
fclose($file);
?>
―――――――――――――――――――――――――――――――――――
PHP4を利用。
.phpのcharsetはShift_JISで、同じくShift_JISで保存しています。
CSVファイルはエクセルで作りShift_JISで書き出しています。
お礼
2度のアドバイスありがとうございました。 結論としてはPHP3は日本語がうまくつかえないんだと思う事にしました。 4に変わる予定があるのでそれまでは力技でいこうとおもいます。どうもでした。
補足
"\"をいれると"\・/td>"となりました。 マルチバイト関数は3では使えないみたいです。 phpとずれるかもしれませんが、秀丸のデフォルトをEUCにしてあって、そこにshift_jisのテキストをコピペしたのですが、そんなやりかたでは文字コード変換できないのでしょうか?php4だとマルチバイト関数つかわずとも何事もなく表示されるので違うと思っていたのですが。 テキストの文字列の最初と最後にコメント<!---->付け足すときちんと表示されると言う事はやっぱり文字コードですよね・・。