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

Re: form のエンコード



遅ればせながら、

>>>>> In [emacs-w3m : No.09875] 青田さん wrote:

> form のデータにエンコードできない文字列が入っていてもそのまま送信していた
> (アクセントつき英字を euc-jp でエンコードして送るなど)ので、編集を終わっ
> た時点および textarea への入力を保存する時点で確認するようにしました。

Emacs 21 と XEmacs に無い関数を使っているのはちょっとマズいので、
例えば添付のパッチのようにするのはいかがでしょう?

> また、こちらは提案なのですが textarea のバックアップを mule-utf-8 などの
> 守備範囲の広いもので保存するようにしませんか?

賛成です。

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

既存のものは従来とおりに扱って、新しいものには

;-*- coding: utf-8; -*-

のようなものを付けるのではどうですか?

(実は w3m-form-use-textarea-backup を nil にしています。すみません。)

--- w3m-form.el~	2008-01-06 22:51:30 +0000
+++ w3m-form.el	2008-01-07 02:51:19 +0000
@@ -221,15 +221,22 @@
   `(w3m-form-put-property ,form ,id :value (cons ,name ,value)))
 (defmacro w3m-form-get (form id)
   `(cdr (w3m-form-get-property ,form ,id :value)))
+
+(eval-when-compile
+  (unless (fboundp 'unencodable-char-position)
+    (defalias 'unencodable-char-position 'ignore)))
 (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))))
+  (let ((pos (when (fboundp 'unencodable-char-position)
+	       (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))))))
+
 (defun w3m-form-get-by-name (form name)
   (let ((plist (w3m-form-plist form))
 	pair value)
-- 
山岡