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

PHP4.xxでSQLIte3で行っています。

名簿をCSVデータで一気にDBにインサートしたいのですが・・・
なぜか名前の1~2文字目あたりのみ文字化けします。

色々試行錯誤していますが・・・
糸口が見つからなくて・・・

どなかたかご教授して頂けませんか?!
文字化け具合(というよりアルファベットに変わってる)が画像を参照してください。

CSVデータでは、山崎まさよし、abc、岡田てるお
となっています。

ちなみにコードはこのような形です。

--------------------------------------------------------
$updir = "./csv/";
$save_name = "list.csv";

if (is_uploaded_file($_FILES["csv"]["tmp_name"])) {

if (move_uploaded_file($_FILES["csv"]["tmp_name"], $updir.$save_name)) {
chmod($updir.$save_name, 0644);
echo "<br />CSVファイルをアップロードしました。";


// CSVの各内容をインサート
$row = 1;
$handle = fopen($updir.$save_name, "r");

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$insert = "insert into list values (";
$insert_row = "";
$row++;

for ($c=0; $c < $num; $c++) {
$data[$c] = mb_convert_encoding($data[$c], "EUC-JP", "SJIS");
$insert_row .= "'".$data[$c]. "',\n";

}

$insert_query = $insert.$insert_row;

$insert_query = substr($insert_query, 0, (strlen($insert_query)-2) );
$insert_query .= ")";

if(sqlite_query($insert_query, $conn)){

} else {
echo "<br>配信先情報の追加を失敗しました。";
}

}
}
}

fclose($handle);
--------------------------------------------------------

「CSVデータ読込だら・・・1文字目のみ文」の質問画像

A 回答 (1件)

EUC-JPで保存しようとしていますね。


SQLiteはUTF-8で保存した方がいいので、

$data[$c] = mb_convert_encoding($data[$c], "UTF-8", "SJIS");

とします。

読み込みはEUC-JPで行っているようですから、出力時に
$data = mb_convert_encoding($data, "EUC-JP", "UTF-8");
でEUCに戻すか、プロジェクト全体の文字コードをUTF-8にしましょう。

まだ、書き始めだと思うので、プロジェクト全体をUTF-8に
することをお勧めします。
    • good
    • 0
この回答へのお礼

ありがとうございました!

とても参考になりました。

お礼日時:2009/06/07 22:13

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