[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: form のエンコード
Katsumi Yamaoka <yamaoka@xxxxxxx> writes:
>> form のデータにエンコードできない文字列が入っていてもそのまま送信していた
>> (アクセントつき英字を euc-jp でエンコードして送るなど)ので、編集を終わっ
>> た時点および textarea への入力を保存する時点で確認するようにしました。
>
> Emacs 21 と XEmacs に無い関数を使っているのはちょっとマズいので、
> 例えば添付のパッチのようにするのはいかがでしょう?
確認不足でした、すみません。 unencodable-char-position() がない時に完全に
消してしまうのも少し不安です。以下のコードだと動きますか?
>> サーバの coding-system ではエンコードできない文字があっても正確に保存/復
>> 元ができるようになりますし、サーバが coding-system を変更しても文字化けが
>> 起こらずにすみます。しかし、その一方で一部の既存のバックアップが文字化け
>> してしまうという問題もあります :-(
>
> 既存のものは従来とおりに扱って、新しいものには
>
> ;-*- coding: utf-8; -*-
>
> のようなものを付けるのではどうですか?
これより coding-system-for-read のほうが優先されてしまいませんか?
--- w3m-form.el.~1.167.~ Thu Dec 27 03:32:27 2007
+++ w3m-form.el Mon Jan 7 19:58:34 2008
@@ -223,13 +223,23 @@
`(cdr (w3m-form-get-property ,form ,id :value)))
(defun w3m-form-coding-system-accept-region-p (&optional from to coding-system)
"Check whether `coding-system' can encode specified region."
- (let ((pos (unencodable-char-position (or from (point-min))
- (or to (point-max))
- (or coding-system
- w3m-form-input-textarea-coding-system))))
- (or (not pos)
- (y-or-n-p (format "\"%c\" would not be accepted. Continue? "
- (char-after pos))))))
+ (w3m-static-if (fboundp unencodable-char-position)
+ (let ((pos (unencodable-char-position (or from (point-min))
+ (or to (point-max))
+ (or coding-system
+ w3m-form-input-textarea-coding-system))))
+ (or (not pos)
+ (y-or-n-p (format "\"%c\" would not be accepted. Continue? "
+ (char-after pos)))))
+ (let ((str (buffer-substring from to))
+ (coding (or coding-system
+ w3m-form-input-textarea-coding-system)))
+ (or (string= str
+ (decode-coding-string
+ (encode-coding-string str coding)
+ coding))
+ (y-or-n-p "This text would not be accepted. Continue? ")))))
+
(defun w3m-form-get-by-name (form name)
(let ((plist (w3m-form-plist form))
pair value)
--
青田