重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!gooアプリ版

PHP5使用者です。
CSVを fgetcsv() で読み込みたいのですが初めてのためうまくいきません。対象のCSVは囲み文字の""がありません。
日本語が含まれているため""がないせいで読み込み後、文字化けを起こしています。
専門書によると
fgetcsv($fp, 読み込み長さ, 区切り文字, 囲み文字)
らしいのですが、囲み文字なしのCSVはどうするかは書いていません。
そもそもfgetcsv()で囲み文字のないCSVを読むこと自体無理なのでしょうか?
お詳しい方、よろしくお願いいたします。

A 回答 (1件)

別に囲い文字が無くても文字化けはしないんじゃないかと思います。


文字列の中にカンマが含まれているのであれば別ですが。

どのような場合に文字が化けるのでしょうか?
    • good
    • 0
この回答へのお礼

いろいろ実験してみましたところ、UTF-8のみOKでshift_jisとEUC-JPは化けるようです。

名前,住所
太郎,東京
次郎,神奈川

とshift_jisにて作成、fgets() と fgetcsv() を同時に動かしてみました。

$tgFi = 'test.csv';
$fp = fopen($tgFi,'r');
while(!feof($fp)){
$line = fgets($fp,1000);
print "{$line}<br />\n";
}
fclose($fp);

$fp = fopen($tgFi, 'r');
while( $ech_a = fgetcsv($fp, 1000)){
foreach($ech_a as $v){ print "{$v} "; }
print "<br />\n";
}
fclose($fp);

<結果>
fgets() はそのまま出ましたが、fgetcsv() のほうは下記のように化けました。
O Z所 
Y  
Y _奈川 

fgetcsv() はUTF-8専用なのでしょうかね?
マニュアルにはそのようなことは書いてないようですが…
よろしくお願いいたします。

お礼日時:2008/03/25 11:09

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