[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 メーリングリストの案内