[PHP-users 34299] Re: MacのUnicodeテキストファイルの処理

Toshio KANEKO kim-t @ r3.dion.ne.jp
2009年 2月 21日 (土) 10:33:42 JST


金子です。
解決しましたので報告します。
ネットで検索して、おそらくこちらの過去ログだった思うのですが、
参考になるところがあったので使わせていただきました。


	$contents = file_get_contents($filename);
	$conv = mb_convert_encoding($contents, 'UTF-8', 'UTF-16LE');
	$lines = explode("\r", $conv);

これで、$linesに各行データがUTF-8で入りますから、
あとはタブ文字での区切りは、

split("\t", $lines[$i])

などで普通にできました。


Toshio KANEKO さんは書きました:
> Linuxサーバでapache+PHP5で開発をいています。
> 
> テキストファイルを送信して、そのテキストファイルをスクリプトで処理、
> DB登録を行います。
> 
> テキストファイルはタブ区切りです。
> 
> 元ファイルはMacのiTunesでプレイリストの書き出しで作成したファイルで、
> Trapad で開きますとUnicode, CRと判断されています。
> 
> これを普段は、TerapadでUTF-8N、CR+LFに変換してからサーバに送っている
> のです。これでは処理が想定どおりに行われます。
> 
> しかし、元のMacが出力したファイルをそのまま送信したいと考え、いろいろと
> 実験したのですが、うまくいきません。
> 
> 元々はファイルをオープンして、fgetsしてsplitでタブで分割していたのです
> が、今回はファイルを一括で読み込んで、開業コードで、splitし、さらに
> 各行ごとにタブでsplitするのですが、どちらもうまくいきません。・
> 
> 
> Bzでバイナリデータを見たのですが、改行は「0D 00」タブは「09 00」なのが
> わかりました。
> 
> また、UnicodeというのもUTF16-LEであるのもわかりました。
> 
> splitしたいだけなのですが、よろしくお願いします。

-- 
金子 稔男(KANEKO Toshio)
kim-t @ r3.dion.ne.jp
(sub:kim1688 @ mac.com)
http://www.ab.auone-net.jp/~kim1688/



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