[PHP-users 21496]Re: 内部エンコードUTF8のファイルからUTF-16のCSVファイルを読み込む

KOYAMA Tetsuji koyama @ hoge.org
2004年 4月 27日 (火) 22:26:59 JST


  小山です。

At Tue, 27 Apr 2004 10:16:49 +0000,
aiko wrote:
> UTF-8で書かれているPHPのソースファイルから、
> UTF-16のCSVファイルを読み込みたいのですが、
> 下記ソースでテストしましたが、値が取得できません。

  UTF-16 には \0 が含まれますので、binary safe ではない fgetcsv ではちゃ
んと読めないでしょうねぇ。fgetcsv を使うのをあきらめて、自分で解析する
んじゃ駄目でしょうか? 

  // file をオープンして
  $fp = fopen('utf16.csv', 'r');

  while (!feof($fp)) {
    // 1行読み込み
    $line = fgets($fp);

    // 文字コードを変換して
    $line = mb_convert_encoding($line, 'UTF-8', 'UTF-16');

    // 自分で , で区切る
    $data = explode(',', $line);

    // $data はご自由に利用して下さい
  }

上記は " の対応をしていませんが、岸川さんが出されたサンプルデータ程度
なら動作してくれます。

# 場合によっては BOM を読み飛ばさないといけないかな?

-- 
	小山 哲志@ビート・クラフト
	koyama @ beatcraft.com
	koyama @ hoge.org


PHP-users メーリングリストの案内