Nozomu Ando
nand****@mac*****
2006年 1月 9日 (月) 04:21:20 JST
Seiji Zenitani <zenit****@gmail*****> writes: > クリップボードの中身は utf-16 ということですが、 > utf-8, utf-16 の2つの設定で違いがわからなかったので > 今回は utf-8 に設定しています。 それで違いが生じることはないはずです。 前回ああいう書き方をしたのは、クリップボードに utf-16 がなかった場合は、 違う振舞いをするからです。(そこまで書くべきでした。すみません) 以下、細かい話になりますが、 (現時点での実装に関してであり、私は GNU Emacs の developer では ないので、将来どうなるかは見当もつきませんので、参考にしないて下さい :-) 一般的に、Mac OS X のクリップボードには、utf-16 や utf-8 や 画像など、 いろんなタイプのものが入っています。 この様子は Mac OS X の開発環境をインストールしてれば /Developer/Applications/Utilities/Built Examples/Clipboard Viewer.app でも見ることができます。 各アプリケーションは自分がサポートできる範囲のタイプのデータをクリップ ボードとやりとりするわけですが、lisp/term/mac-win.el を見ると、現時点で GNU Emacs のサポートしているのは public.utf16-plain-text ('utxt') と com.apple.traditional-mac-plain-text ('TEXT') のようです。(括弧内は Clipboard Viewer で見た時のタイプ名) 前者の encoding は utf-16be (PowerPC) または utf-16le (Intel) です。 GNU Emacs がクリップボードからデータをもらう時は、'utxt' のデータが 存在すれば、 (1) utf-16 から selection-coding-system への変換 (OS の変換関数を使う) (2) selection-coding-system から Emacs 内部コードへの変換 の2段階の手続きを踏みます。これは、おそらく、MacRoman とか MacJapanese とかの OS 固有の encoding に合わせるためだと思います。 (1) が失敗した場合、utf-16 から Emacs 内部コードへの変換を直接行なっています。 クリップボードに 'utxt' がなかった場合、'TEXT' が使われますが、この場合 何が起きるのか私には良く判りません。クリップボードに 'utxt' を置かない ようなアプリケーションがほとんど手元にないからです。唯一見つけたのは、 Classic の SimpleText ですが、encoding は MacRoman と MacJapanese が混 ざってました。selection-coding-system==utf-8 ですと日本語は文字化けしま すが、そういうアプリケーションとの連係の時にだけ C-x RET X (set-next-selection-coding-system) という手も使えるかと思います。 Nozomu Ando