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

aiko vvv_aiko_vvv @ hotmail.com
2004年 4月 28日 (水) 04:35:00 JST


お世話になります。
岸川です。
下記のソースで表示してみたところ、以下の結果になりました。
一部文字化けしています。
どのような原因が考えられますか。
utf16.csvにBOMはつけていません。

★一度上手く表示できたのですが、なぜか、その後表示できなくなりました。

よろしくお願いします。

<結果>
============
[0] 
[1] 0001 &shy;ャンセル〉 ; ID_CANCEL 
[2] 0002 oい〉 ; ID_YES 
[3] 0003 Dいえ〉 ; ID_NO 
[4] 

<ソース>
============
// test.php
///////////////
// ファイルから値を読み込む
$ret=fread_utf16($data);

$tag="";
$cnt=count($data);
for ( $i=0; $i<$cnt; $i++ ) {
  $tag .= "[$i] " ;
  $jcnt=count($data[$i]);
    for ( $j=0; $j<$jcnt; $j++ ) {
    $tag .= $data[$i][$j] . "     ";
  }
  $tag .= "<br>";
}
?>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#333333" LINK="#3333CC" MARGINHEIGHT="0" 
TOPMARGIN="0">
<?php
print	$tag ;
?>
</BODY>
</HTML>
<?php
// UTF16用
function fread_utf16( &$data )
{
  $fn="./utf16.csv";

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

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

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

    // 自分で , で区切る
    $data[$row] = explode(',', $line);
    $row++;
  }

  fclose($fp);

  return TRUE ;
}
?>
///////////////


// utf16.csv
///////////////
0000,OK,TEST,UTF-8に変換できますか?						; ID_OK
0001,キャンセル												; ID_CANCEL
0002,はい													; ID_YES
0003,いいえ													; ID_NO

_________________________________________________________________
メッセンジャーで総額1億円プレゼント! http://im.msn.co.jp/home.htm 



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