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

解決済みの質問

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>&nbsp;</td>\n";
}

echo "<td>$mail</td>\n";
echo "</tr>\n";
}

fclose($file);
?>
―――――――――――――――――――――――――――――――――――

PHP4を利用。
.phpのcharsetはShift_JISで、同じくShift_JISで保存しています。
CSVファイルはエクセルで作りShift_JISで書き出しています。

投稿日時 - 2008-12-17 10:43:04

QNo.4562224

すぐに回答ほしいです

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

理由はわかりませんが
$name = strtr($name, "", "崎");
が引っかかってるっぽいです

$name = str_replace( "", "崎",$name);
または
$name = strtr($name, array("" >= "崎"));

これだとちゃんと「務」で表示されました

投稿日時 - 2008-12-18 20:21:52

お礼

koke29様、ありがとうございます!
PHP4だからダメなのかなと、PHP5の環境もつくって試してみたのですが、今度はさらに文字化けしてまた一苦労していました。
ずっとエンコードの問題だと思っていたのですが、文字置換の部分が影響していたのですね。

投稿日時 - 2008-12-19 10:00:09

ANo.1

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

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

回答(2)

ANo.2

あああ…
なんか文字が消えてしまう…

"" は "サキの難しいやつ" です。

投稿日時 - 2008-12-18 20:24:02

お礼

立の崎は、いろいろ扱いが難しいみたいですね。
補足ありがとうございます!

投稿日時 - 2008-12-19 10:01:57

あなたにオススメの質問