UTF8 で生成するファイルNo.28634
Brainstorm さん 10/07/27 07:50
 
ご他聞にもれず、私も Kindle2 を購入。Webでみつけた日本語化を終え、以前からあ
ったテキストファイルを、UTF8 のコードでセーブし直してKindle2 に送り込んだが、
どうしても開けませんでした。これが昨夜のことで、一晩寝ずに考え(嘘です。考え
てるうちに寝てしまった)、今朝になって、ふと「Windows のメモ帳で作ったらどう
なる?」と思い、早速実行。以下、次のとおりです。

 1. できたファイルのサイズが違う。メモ帳で作ったものが
   3バイト大きい。
 2. Kindle2 に転送。メモ帳のものは開くことができた。
 3. 二つのファイルを16進ダンプしてみると、メモ帳の
   ものは頭に3バイト余分についていて、これが 1.
   のサイズの違いだとわかりました。
   付加された3バイトは「EF BB BF」です。

この3バイトの意味は私には分かりませんが、対応の必要があるものならばよろしく
お願いします。

   ちなみに最初の16バイトのダンプリストは以下です。

Windows メモ帳使用
00000000 : EF BB BF E7 AE B4 E8 A8  80 E3 81 A8 E8 80 83 E5 :

秀丸使用
00000000 : E7 AE B4 E8 A8 80 E3 81  A8 E8 80 83 E5 AF 9F 0D :

p.s. 秀丸を使用するようになって20年以上。ずいぶんお世話に
   なりました。ありがとうございました。

[ ]
RE:28634 UTF8 で生成するファイルNo.28635
いいじま さん 10/07/27 09:09
 
こんにちは、秀丸愛好家のいいじまと申します。以後よろしくお願いします。

>  1. できたファイルのサイズが違う。メモ帳で作ったものが
>    3バイト大きい。
>  2. Kindle2 に転送。メモ帳のものは開くことができた。
>  3. 二つのファイルを16進ダンプしてみると、メモ帳の
>    ものは頭に3バイト余分についていて、これが 1.
>    のサイズの違いだとわかりました。
>    付加された3バイトは「EF BB BF」です。
>
> この3バイトの意味は私には分かりませんが、対応の必要があるものならばよろしく
> お願いします。

この3バイトは BOM(Byte Order Mark)といって、UCS-2コードで0xFEFFになります
これはUCS-2で保存した際に、そのデータがBig Endian(0x1234を 12 34とする)
なのか、それともLittle Endian(0x1234を34 12とする)なのかを識別するための
もので、本来UTF-8では必要のないものです。

が、上記のようにBOMを必要とするアプリもあるので、秀丸ではUTF-8での保存時に、
「BOMをつける」というチェックをつけることで、メモ帳と同じ出力にすることが
できます。

[ ]
RE:28634 UTF8 で生成するファイルNo.28636
秀丸担当 さん 10/07/27 09:16
 

> 3. 二つのファイルを16進ダンプしてみると、メモ帳の
>   ものは頭に3バイト余分についていて、これが 1.
>   のサイズの違いだとわかりました。
>   付加された3バイトは「EF BB BF」です。

この先頭の3バイトは、いわゆるBOMというものだと思います。
秀丸エディタでは、名前を付けて保存のダイアログで「Unicode(UTF-8)」を指定
しているときに、同時に「BOMを付ける」をONにして保存すると、この3バイトが
付いて保存されると思います。

V8.00以降では[ファイル]→[エンコードの種類]→[BOM]で開いた後に切り替えも
できます。(もしメニューに無い場合は[その他]→[メニュー編集]で変更できま
す)
ステータスバーをカスタマイズしてBOMの有無を表示させて、クリックすることで
変更もできます。

ちなみにBOMはByte Order Markの略で、UTF-16のバイト順がどちらかを示すため
のものでした。
UTF-8にはバイト順は無いので本来意味は無いですが、ソフトによってはUTF-8か
どうかの判別のためにこの3バイトが必要だったり不必要だったりするようです。
秀丸エディタでは「BOMを付ける」を変更することでどちらも出力できます。

[ ]
RE:28636 UTF8 で生成するファイルNo.28637
Brainstorm さん 10/07/27 09:58
 
 いいじまさん、担当さん、早速のご回答ありがとうございました。
昔、OS-9 という極めてマイナーなものを触っていましたが、寄る年波
には勝てず、今はまったくのアプリケーション・ユーザーと化して頭脳
が不活性化しています。

 またお世話になるかも知れませんがよろしくお願いします。

[ ]