[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 ­ャンセル〉 ; 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 メーリングリストの案内