[PHP-users 21495]内部エンコードUTF8のファイルからUTF-16のCSVファイルを読み込む
aiko
vvv_aiko_vvv @ hotmail.com
2004年 4月 27日 (火) 10:16:49 JST
いつもお世話になっております。
岸川と申します。
UTF-8で書かれているPHPのソースファイルから、
UTF-16のCSVファイルを読み込みたいのですが、
下記ソースでテストしましたが、値が取得できません。
根本的にやり方が間違っているのでしょうか。
UTF-8の場合は、正常に動作しています。
どなたか、ご教示下さい。
よろしくお願いします。
PHP Version 4.3.4
'./configure' '--with-thttpd=../thttpd-2.21b' '--enable-mbstring'
'--enable-mbstr-enc-trans' '--enable-mbregex' '--enable-track-vars'
'--enable-trans-sid' '--enable-sockets' '--enable-sigchild'
'--with-config-file-path=/usr/local/lib/php.ini' '--enable-libgcc'
'--enable-php-streams' '--enable-exif' '--with-hyperwave' '--with-ncures'
'--with-tsrm-pthreads' '--with-zlib' '--enable-shmop' '--enable-sysvsem'
'--enable-sysvshm' '--enable-shared' '--enable-static'
'--enable-fast-install' '--without-gd' '--without-mysql'
// test.php ( UTF-8で記入 )
//===========================
<?php
// ファイル読み込み
$ret=testRead( $data , $error );
if(!$ret) {
print $error ."<br>";
exit();
}
// 表示
$icnt=count($data);
for ( $i=0; $i<$icnt; $i++ ) {
print "[$i] " ;
$jcnt=count($data[$i]);
for ( $j=0; $j<$jcnt; $j++ ) {
print $data[$i][$j] . " ";
}
print "<br>";
}
// 終了
exit();
//
// ファイル読み込み関数
//
function testRead( &$data , &$error )
{
// $fn="./utf8.csv";
$fn="./utf16.csv";
// メッセージ内容を読み込む
if( !$fp = @fopen( $fn,"r") ) {
$error =" file open Error" ;
return FALSE ;
}
$row = 0 ;
// $tok=",";
$tok=mb_convert_encoding( "," , "UTF-16" , "UTF-8");
while( $forms = @fgetcsv( $fp,4000,$tok) ){
$num = count($forms);
for($c=0; $c<$num; $c++ ) {
// $data[$row][$c] = $forms[$c];
$data[$row][$c] = mb_convert_encoding($forms[$c] , "UTF-8" ,
"UTF-16") ;
}
$row++;
}
@fclose($fp);
return TRUE ;
}
?>
//
// utf16.csv ( UTF-16で記入 )
//===========================
TEST,ああああああ,いいいいいい,テストです。
TEST,ああああああ,いいいいいい,テストです。
TEST,ああああああ,いいいいいい,テストです。
_________________________________________________________________
メッセンジャーで総額1億円プレゼント! http://im.msn.co.jp/home.htm
PHP-users メーリングリストの案内