[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:08225] Re: バッファの総バイト量



こんばんわ。chiyu@ふくおか、といいます。
最近はLISP(xyzzyもEmacsも両方とも)はあまり触れていません。
# ちょっとした作業にキーボードマクロは使いますが。

SATO Osamu <yebisuya@xxxxxxxxxxxx> writes:
> koji kimura さん、こんにちは。貴メール
>     Time: [Tue, 23 Apr 2002 02:23:52 +0900]
>     Title: [xyzzy:08223] Re: バッファの総バイト量 
> 拝受しました。
> 
> >>やはりファイルに書き出して、ファイルサイズで調べるのが確実な気が
> >>してきました。
> 
> うーむ。そうですか。折角、良いことを教わったと 思っていたのですが・・・

バイト量について。
以下は自分の思い込みの勘違いの可能性もあります。
バッファの文字コードを考慮した方法もありそうですし。
convert-encoding-from-internal あたりかな?(あてずっぽう)
(Meadowだとencode-coding-regionを使うとか)

たとえば、Unicodeベースのワープロを使うとします。
すると、たとえShift-JISのファイルを開いたとしても、
ワープロ内ではUnicode(UTF-16)に変換して、データを保持しているわけです。
よって、バイト量はUnicodeで数えるわけで、
半角英数字も1文字2byteで計算するはずです。

xyzzyの内部コード表は M-x insert-internal-char-table で
確認できます。(その時のバッファ内に挿入されます。)

MeadowなどのEmacsの場合、内部コードはまた
別のmuleコードを使っているはずです。

とにかく、元のファイルのコード系がShift-JISのファイルだろうが、
電子メールのJIS(ISO-2022-JP)のファイルだろうが、関係なく、
内部コードに変換するわけです。

だから、バッファ内だけを見ても、元のファイルのバイト数は
わからないと思います。

で、多分、convert-encoding-from-internal で
バッファ内を強制的にShift-JISとかUnicodeとかに
変更すれば、バイト数がわかるのではないか、と
思うわけです。

なお、Meadow(Emacs)にも
(split-string STRING &optional SEPARATORS)
(list-length X)
という関数は存在します。

とりあえず、以上です。
お元気で。

Index Home