サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2013/04/02

PHP-fgetcsvでハマった

Windows Server 2008 R2、PHP 5.3.22の環境で、fgetcsvを使ったPHPプログラムでハマりました。CSVファイルは別のシステムから転送されるデータで、Excelを想定してか、文字コードはSJIS。PHPプログラムはバッチ処理で使うので、Web関連ではないということでUTF-8ではなくSJISにしていました。これでfgetcsv関数を実行すると、あるデータの場合CSVファイルをうまくフィールド分けしてくれません。今までテストで使ったデータでは問題なかったのですが...

Web情報で対応策を探すと、こちらにありました。手順は

1.SJISのCSVファイルを読む
2.文字コードをUTF-8に変換して、テンポラリファイルに書き込む
3.そのテンポラリファイルでfgetcsv関数を実行する
4.処理後、必要であれば文字コードを戻す(今回の場合、最終的な文字コードはEUC-JPだった)


1、2の部分は以下のプログラムです。

$buf = mb_convert_encoding(file_get_contents($filename), "UTF-8", "SJIS-win");
$fp = tmpfile();
fwrite($fp, $buf);
rewind($fp); // ファイルポインタを先頭に戻す

この通りのやり方でうまくいきました。file_get_contentsやtmpfile関数は知らなかったので、勉強になりました。

スポンサーサイト

コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1518-aeae8e1d

■  カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。