ネットワークに向かって呟いている言葉の履歴

2016年1月1日〜

古いのはこちら −前− −後− 最近の私 top_page

'16.12.3 opt + space で入る文字

覚え書きとして。

MacOS10.10.5でmiエディタ(ver 3.0.0b13(227))を使って、保存する文字コードにShift_JISを選択している場合。半角空白文字を入れるときに opt + space を使ってはだめ。保存しようとすると次のダイアログが表示されてしまう。

「テキストエンコーディング変換失敗 ドキュメントの中に変換できない文字があったため、UTF-8で保存しました。[OK]」

原因。opt + space で入力される文字は半角空白文字ではない。対策。shift + space を使って入力すること。ちなみにATOKでも同じでした。

.

.

するってーと、opt + space で入力される文字はなにものだい、空白文字ではないのかい? という疑問から調べたらUTF-8における0xc2a0でしてノーブレークスペース(NBSP)というものでした、えー(困惑)。ShiftJISにはそんなコードは無いので、miはUTF-8で保存しようとするというわけで。

空白文字入力の操作と結果を整理すると次のとおり。
  • space → 全角空白または半角空白
  • shift + space → 半角空白
  • opt + space → ノーブレークスペース(NBSP)
  • なおmiエディタで半角空白文字が入らないときは、モードごとの設定で shift + space のキーバインドを確認してみること。

    以下、余談。半年ほど前に偶然に opt + space が原因と気づいて「じゃ、shift + spaceや英数直接入力すればいいじゃないか」と流していたのですが、今回覚え書きとして書くにあたり、それだけだとナニだったので調べることにしました。で、opt + space で書き込まれた値を調べるためにはUTF-8で保存して16進数で内容を表示することを考えましたが、表示するためにはユーティリティーが必要だなぁ探すのもインストールも面倒だなぁ…よし止そう!と最初は思いました。しかしMacならターミナルから「od -h ファイル名」で表示できると気づき、調べた次第。なるほどノーブレークスペースかと勉強になりました。あと、MacOSのファイルはリトルエンディアンなことに改めて気づいたり。

    それにしてもUTF-8が憎い。0xc2a0が ノーブレークスペースなのはググってわかったものの、その根拠となるコード一覧みたいなの…ASCIIコード表みたな…がでてこない。とうとうウィキペディア様にお助けいただいて、0xc2a0は定義ではなくて導出だから一覧表として無いのだ、と私は理解しました。こんなかんじ。

    「文字集合UnicodeではノーブレークスペースをU+00A0に割り当てており、それをUTF-8の11bitの2バイトで符号化し、値は0xc2a0となる」

    UnicodeのNBSP  U+00A0       ->      00010    100000  ※ビットパターン
    UTF-8  11bit 符号化パターン     110 yyyyx 10 xxxxxx
    UTF-8のNBSP  0xc2a0         ->  110 00010 10 100000
    

    これは面倒だよ。0xc2a0という値から逆引きできないじゃないか…。あとビット長が気持ち悪い…。

    こういうのがだんだん億劫になってきました。やばい。


    先頭に戻る top_page
    これはすが制作しました。著作権を放棄してません http://suji.la.coocan.jp/
    suji@mba.nifty.ne.jp