jstrings(July 29, 2004)

    名前 jstrings - ファイル中の表示可能な文字列(日本語を含む)を表示する。

    書式 jstrings [-i 文字コード] [-n 文字数|-文字数] [-fpcts] [ファイル名]

    説明 jstrings は指定されたファイル中に含まれる表示可能な文字列を表示する。 文字列と認識できる文字コード(符号化方式)はオプションにより指定でき る。デフォルトでは4文字以上の長さのものを表示可能な文字列とするが、 以下で説明するオプションにより変更することができる。

        ファイル名が指定されないときは標準入力を対象とする。

    オプション -i 文字コード ファイルに含まれるであろう文字列の文字コード(符号化方式)を指定 する。現在指定可能な文字コードは以下の通り。

        ANSI_X3.4-1968

  ASCII

  US

US-ASCII
    ファイルに含まれる ASCII 文字列のみを対象とする。

Windows-31J CP932 MS932 ファイルに含まれる CP932 の文字列を対象とする。これは Shift_JIS + いわゆる機種依存文字のことである。

Shift_JIS MS_Kanji ShiftJIS

  SJIS
ファイルに含まれる Shift_JIS の文字列を対象とする。これには いわゆる「機種依存文字」は含まれない。

  EBCDIC
ファイルに含まれる EBCDIC の文字列を対象とする。

ISO-2022-JP ISO2022JP

  JIS
ファイルに含まれる ISO-2022-JP(を拡張したもの) の文字列を対 象とする。詳細は後述の ISO-2022-JP の項を参照のこと。

UTF-16 UTF16 ファイルに含まれる UTF-16 の文字列を対象とする。バイトオーダ マーク(BOM)を検出した時には、BOMに従いビッグエンディアンとリ トルエンディアンを切り替える。

    UTF-16LE UTF16LE ファイルに含まれる UTF-16LE の文字列を対象とする。バイトオー ダマーク(BOM)は読み捨てられる。

    UTF-16BE UTF16BE ファイルに含まれる UTF-16BE の文字列を対象とする。バイトオー ダマーク(BOM)は読み捨てられる。

-n 文字数 -文字数 指定された文字数以上の長さの文字列を表示する。指定は文字数 単位であるためASCII文字に限らず漢字なども1文字と数えられる。 デフォルトは4。

    -f それぞれの文字列の前にファイル名を表示する。

    -p それぞれの文字列の前に文字列が見つかったファイル内での先頭 からの位置を表示する。

    -c それぞれの文字列の前にその文字列のコード名を表示する。

    -t (可能であれば)標準出力をテキストモードで使用する。 デフォルトはバイナリモードである。

    -s 文字列の先頭バイトがマルチバイト文字の先行バイトであった場 合には、それを読み捨て、2バイト目以降から文字列が始まってい るものとする(Shift_JISおよびWindows-31Jでのみ有効)。

    -? ヘルプメッセージを表示する。

ISO-2022-JP -i オプションに ISO-2022-JP を指定したときには、RFC1468 で規定され る ISO-2022-JP を独自に拡張した文字列をファイルから検索する。この 拡張は以下のとおり。

    1)  ESC 2/4 4/9 というエスケープシーケンスにより JIS X0201 仮名文字 集合(いわゆる半角カタカナ)へ切り替える。

    2)  CR LF により ASCII に切り替える。

    また、エスケープシーケンスに続かない、文字集合の不明なバイト列は -i ISO-2022-JP:SUBCODE という形でその扱いを指定することにより特定 の文字集合とみなすことができる。SUBCODE に指定できる値は以下のとお り。

  ASCII
文字集合が不明なバイト列を ASCII とみなす。 X0201-ROMAN 文字集合が不明なバイト列を JIS X0201 ラテン文字集合とみなす。 X0208-1978 文字集合が不明なバイト列を JIS X0208-1978 とみなす。 X0208-1983 X0208-1990 文字集合が不明なバイト列を JIS X0208-1990 とみなす。 X0201-KANA 文字集合が不明なバイト列を JIS X0201 仮名文字集合とみなす。

  ALL
文字集合が不明なバイト列を、上記の文字集合すべてに可能な限り 当てはめる。

  IGNORE
文字集合が不明なバイト列は無視して読み捨てる。

例えば、-i ISO-2022-JP:ASCII と指定したときには、文字集合の判断 がつかないバイト列は、ASCII文字列として扱われる。 SUBCODE を省略した場合には IGNORE が指定されたものとみなす。

    バグ 充分にテストされていないのでバグは多々あると思われる。

        ファイル内に含まれる文字列の長さが65535バイトを超えるときにはうま く表示できない。これは、vstr.c 内の MAX_BUF_SIZE 定数により制限さ れている。

        EBCDIC を指定したときには -f -p -c で表示される情報は ASCII である ため、表示が乱れる。

        UTF-16* で検出可能な文字集合はCP932と同一の範囲内のみである。

        UTF-16* を指定したときには結果は常に BOM を先頭に付加したUTF-16BE で出力される。また、-f でファイル名を表示させた時に、ファイル名に 非ASCII文字が含まれている場合、それは文字化けを引き起こす。

        -i オプションは同時に複数指定することも可能であるが、その場合、表 示は複数の文字コードが入り混じったものとなる。 将来的には UTF-8 も対象とし、表示するために使用する文字コードも指 定できるようにしたい。

    著者 はせがわ ようすけ