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

Re: form のエンコード



>>>>> In [emacs-w3m : No.09885] 青田さん wrote:
> Katsumi Yamaoka <yamaoka@xxxxxxx> writes:
>> Emacs 21 と XEmacs に無い関数を使っているのはちょっとマズいので、
>> 例えば添付のパッチのようにするのはいかがでしょう?

> 確認不足でした、すみません。 unencodable-char-position() がない時に完全に
> 消してしまうのも少し不安です。以下のコードだと動きますか?

ううむ。例えば utf-8 だと Emacs 21 + Mule-UCS でも、こういういや
な問題 (全角→半角変換) があるんですが、いかがでしょう?

(let ((str (string (make-char 'japanese-jisx0208 38 65))) ;; α
      (coding 'utf-8))
  (string= str
	   (decode-coding-string
	    (encode-coding-string str coding)
	    coding)))
 => nil

それから、

> +  (w3m-static-if (fboundp unencodable-char-position)

Emacs 21.x と 22.1 および現在の 23.0.50 では、byte-code に互換性
があるようなので、static は使わない方が良いかと。Emacs 23.0.60
(Unicode-2) とそれ未満では互換性が無いことを確認しています。

これはコンパイル済みの emacs-w3m を配布する人たちがいて、それを
コンパイルしたときとは異なる版の Emacs で使う場合を想定している
んですが、そんなことを心配する必要は無いのかな。実はちょっと試し
た限り、すでに Emacs 22.1 でコンパイルしたものを 21.1 で使うこと
ができなくなっていました。

>>> サーバの coding-system ではエンコードできない文字があっても正確に保存/復
>>> 元ができるようになりますし、サーバが coding-system を変更しても文字化けが
>>> 起こらずにすみます。しかし、その一方で一部の既存のバックアップが文字化け
>>> してしまうという問題もあります :-(
>>
>> 既存のものは従来とおりに扱って、新しいものには
>>
>> ;-*- coding: utf-8; -*-
>>
>> のようなものを付けるのではどうですか?

> これより coding-system-for-read のほうが優先されてしまいませんか?

はい。ちゃんとコードを読んでいないのでごちゃごちゃ書くのをやめて
しまったんですが、ファイルを binary で読んで coding cookie を自
前で parse することを想定していました。(そういうことをする関数が
あるんですが、Emacs と XEmacs で異なるので、自分でやってしまう方
が管理しやすいかもしれません。)

そんなに大事なファイルでもないから、新しいものには何らかのフラグ
を付けておいて、無いものは消すか無視する、でも良いような気もして
きました。
-- 
山岡