utf8nude <概要> utf8nude : ASCIIで表示不可の文字、UTF8でコード外のバイト列を弾く <書式> Usage : utf8nude <filename> Options : -e --- 不正なバイトで止める -i --- 置換したら終了ステータス1を返す -d<文字列> --- 変換文字列を置き換える Version : Tue Dec 12 12:12:12 JST 2012 <説明> POSTされたデータをcgi-name等で変換した後、 不適切なバイト列を除去します。ここで不適切とは、 * ASCIIコード内であるが、表示できないコード、CRの0x0d * ASCIIコード、UTF8のコード体系のどちらにも属さないバイト列 * UTF8の5,6バイトコード のことです。 空白、タブ、改行は許可します。 <例1> 以下のように、ヌル文字等を指定すると削除されます。 //ヌル文字をはさむ $ echo -e 'あいう\x0えお' | utf8nude あいうえお //DELを除去(odやxdumpで見ると消えている。) $ echo -e '\x7f' | utf8nude | od -x 0000000 000a 0000001 //文字は割り当てられてないがコードとしては正しい場合は何もしない。 $ echo -e '\xEF\xBF\xBF' | utf8nude ??? //UTF8でとりうるビット列の外 $ echo -e '\xEF\xBF\xC0' | utf8nude <例2> 文字の変換が行われたかどうかは、-iオプションで調査できます。 また、すぐに出力を止めたいときは -eオプションを指定します。 //通常は変換しても終了ステータス0 $ echo -e '\x0' | utf8nude $ echo $? 0 //変換したらエラーにする $ echo -e '\x0' | utf8nude -i $ echo $? 1 //-eオプションだと出力しない。 $ echo -e '\x0' | utf8nude -e Error[utf8nude]: 不正な文字です。 $ echo $? 1 <例3> -d<文字列> で、変換に使うダミー文字を指定できます。 $ echo -e '\x0 \x0' | utf8nude -dダミー ダミー ダミー