ヌルが0x20と表示されるNo.23132
あつし さん 07/06/18 10:10
 
いつもお世話になっています。
V6.02を使っています。

ファイル中のヌル(0x00)が0x20と表示されるのですが、この点は
どうなっているのでしょうか?
「表示とカラー」にも設定はないようですが。

ファイル中にヌル文字が入っていることなど、滅多に無いことですが、
たまたま、ヌル文字を改行の意味で使う仕様となっているファイル
があって、ヌル文字であることが最初わかりませんでした。
あるシステムから別のシステムへ転送されるファイルで考えられた
仕様で、1行のまま、複数行を表現する方法として考えられた
ものでした。考えた人の見識を疑いたくなります。

とってもレアなケースなのですが、今回は困りました。

以下でファイルを作成して確認しました。
C:>perl -e "print pack('H*','31320033')"; > A1.txt

[ ]
RE:23132 ヌルが0x20と表示されるNo.23137
秀丸担当 さん 07/06/18 11:27
 

>ファイル中のヌル(0x00)が0x20と表示されるのですが、この点は
>どうなっているのでしょうか?
>「表示とカラー」にも設定はないようですが。

ヌル文字がある場合は、自動的に半角空白に変換されてしまいます。
バイナリモードとして読み込めば、00 と表示されている箇所があるので、これ
を一時的に別のコードに書き換えて無理矢理なんとかすることはできるかもしれ
ませんが。
([その他]→[メニュー編集]で「ファイル」メニューに「バイナリモード」を追
加できます)

V7.00ではヌル文字を含んだファイルを読み込んだとき警告が出るようになる予
定です。
と、いま確認してみたら日本語等が含まれるときは警告が出ましたが英数字だけ
の場合は出なかったので次のβ版で修正させていただきます。


たとえばC言語プログラムではヌル文字を文字列の終端として扱うのは一般的で、
テキストファイルとしてではなく、独自形式のバイナリファイルとして扱うファ
イルなのであれば、ヌル文字を含んで出力することはたまにあるかもしれません。

内部的な話ではありあすが、秀丸エディタがなぜヌル文字を変換してしまうのか
というと、そこが文字列の終端とみなされてしまい、不都合が起きるためです。
これをUnicodeの独自文字に一時的に置き換えることで解決しようかどうかとい
うネタもありますが、いまのところやっていないです。

[ ]
RE:23137 ヌルが0x20と表示されるNo.23138
あつし さん 07/06/18 12:29
 
素早い回答有り難う御座います。\(^_^)/

>たとえばC言語プログラムではヌル文字を文字列の終端として扱うのは一般的で、

全くその通りで・・・。
この仕様を決めた人は、一体何考えてるんだか。

--
取り急ぎ。


[ ]