[PHP-users 12984] fgetcsv()について
Nobuyuki.Fukuoka
php-users@php.gr.jp
Tue, 4 Feb 2003 15:35:49 +0900
福岡です。
fgetcsv()の第3引数に '\t'(タブ)を指定し、
対象ファイルに日本語が含まれていた場合に、
日本語部分が文字化けを起こすという現象に悩んでいます。
タブ区切で作成されたエラーメッセージファイルを読むという処理なのですが、
文字コードは、プログラム/メッセージファイル共にEUC-JPです。
例)
メッセージファイル
00000 データベースアクセス時にエラーが発生しました。
00100 ユーザ情報管理テーブルへのアクセス時にエラーが発生しました。
00101 ユーザ情報管理テーブルの読み込み時にエラーが発生しました。
00102 ユーザ情報管理テーブルの更新時にエラーが発生しました。
00103 ユーザ情報管理テーブルへのデータ挿入時にエラーが発生しまし
た。
プログラム(読み込み部分)
1: if( !( $fn = @fopen( "dgx_error.msg", "r" ) ) ){
2: $msg = ERROR_DEFAULT_MSG;
3: }
4: else{
5: while( $rec = fgetcsv( $fn, 1000, "\t" ) ){
6: $v = trim( $rec[1] );
7: $rec[0] = trim($rec[0]);
8: if( $rec[0]{0} === '#' ){ continue; }
9: if( $rec[0]{0} === '' ){ continue; }
10: $msgTable[$rec[0]] = $v;
11: }
12: fclose( $fn );
13: }
trim()の直前に生データを出力させて見ましたが、
やっぱり化けてしまうので、
fgetcsv()で行を取得した際に既に文字化けを起こしていると思います。
以下に環境を示します。configure や php.ini での設定で
関連する箇所はやはり mb_string あたりなのでしょうか?
環境
System:SunOS draco 5.9 Generic_112233-02 sun4u
PHP:4.3.0
configure: './configure' '--with-pgsql'
'--with-apxs=/export/home0/dgx-admin/apache/bin/apxs'
Apache:1.3.27
よろしくお願い致します。
*---------------------------------------*
K 三菱電機情報ネットワーク株式会社
A インターネットシステム部 第1課
P
P 福岡 伸行
A E-Mail : fukuoka@tyo.mind.co.jp
*---------------------------------------*