[Macemacsjp-users 887] Re: clipboad-coding-system

アーカイブの一覧に戻る

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



Macemacsjp-users メーリングリストの案内
アーカイブの一覧に戻る