前回と比べて変化は無いです。
利用するためのサンプルが、一度にマッチする量が多い場合に、セグメンテーション違反になっていたので修正しました。
wagnek.2010-04-10.tar.gz
(例 1) UTF-8 のファイルの、ファイル名を渡す。
$ date | nkf -w > date.txt $ php wagnek.php date.txt 2| Basic Latin | 4| 2010 113| CJK Unified ...| 3| 年 2| Basic Latin | 3| 4 113| CJK Unified ...| 3| 月 2| Basic Latin | 3| 10 113| CJK Unified ...| 3| 日 2| Basic Latin | 1| 113| CJK Unified ...| 9| 土曜日 2| Basic Latin | 13| 19:48:55 JST 1| Control Code...| 1| \n
(例 2) UTF-8 ではないテキストの内容を UTF-8 にして渡す。
$ cat ../wagahaiwa_nekodearu.txt | nkf -w | php wagnek.php | head -n10 113| CJK Unified ...| 6| 吾輩 101| Hiragana | 3| は 113| CJK Unified ...| 3| 猫 101| Hiragana | 9| である 1| Control Code...| 2| \r\n 113| CJK Unified ...| 12| 夏目漱石 1| Control Code...| 4| \r\n\r\n 2| Basic Latin | 55| ------------------------------------------------------- 1| Control Code...| 2| \r\n 100| CJK Symbols ...| 3| 【
文字を分割したい場合は chasen, kakasi, mecab がお勧めです。
"199| unknown" という文字が表示される場合、違う文字コードを渡している可能性が高いです。
(例 3) EUC-JP の文字を渡すと "199| unknown" が発生する。
$ date | nkf -e | php wagnek.php 2| Basic Latin | 4| 2010 5| Latin Extend...| 2| ǯ 2| Basic Latin | 3| 4 199| unknown | 2| \xB7\xEE 2| Basic Latin | 3| 10 199| unknown | 2| \xC6\xFC 2| Basic Latin | 1| 199| unknown | 6| \xC5\xDA\xCD\xCB\xC6\xFC 2| Basic Latin | 13| 19:55:51 JST 1| Control Code...| 1| \n
unknown の場合1バイトずつ 16進数 で表現しています。
$ php -r 'var_export(mb_convert_encoding("\xB7\xEE", "UTF-8", "EUC-JP")); print "\n";'; '月' $ php -r 'var_export(mb_convert_encoding("\xC6\xFC", "UTF-8", "EUC-JP")); print "\n";'; '日' $ php -r 'var_export(mb_convert_encoding("\xC5\xDA\xCD\xCB\xC6\xFC", "UTF-8", "EUC-JP")); print "\n";'; '土曜日'
ǯ (ǯ) の部分は UTF-8 の別の文字コードにマッチしています。
$ php -r 'var_export(unpack("N", mb_convert_encoding(mb_convert_encoding("年", "EUC-JP", "UTF-8"), "UCS-4", "UTF-8"))); print "\n";'; array ( 1 => 495, ) $ php -r 'print dechex(495) . "\n";' 1efhttp://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFF の 横 01E0 - 縦 F の部分です。
例えば、データベースに binary(blob)型で UTF-8 に似ているデータが入っている場合のサルベージや、サルベージするかどうかの検討に利用します。
0 件のコメント:
コメントを投稿