[Mew-dist 14422] argument encoding way (was Re: b64)

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2000年 10月 6日 (金) 22:59:18 JST


白井です。

Windows で日本語の引数を euc-jp で符号化して command に渡すと変
だよ、という話の続きです。深く静かに検討/討論をしていました。

From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [Mew-dist 14366] Re: b64
Message-ID: <20001003.214112.112570563.kazu at example.com>
Date: Tue, 3 Oct 2000 21:42:50 +0900

kazu> OS に依存している話ではないのだけれど。

で、やっぱり『OS に依存する話』という結論になりました。簡単にま
とめちゃうと、argv は文字列なのだから(Windows から見て binary と
しか見えない) euc-jp をそのまま通して command に渡すという保証は
どこにもない、ということです。

実験した結果でも "井" や "鈴" の euc-jp 表現のコードは sjis では
マッピングできないため、破綻します。

というわけで、(日本語の)Windows では日本語の文字は sjis で渡さな
ければならないわけなのですが、mew-cs-database-for-encoding を直
接いじるのは大変だし、拡張性も無い(もしかしたら、みんな utf-8 に
したい人もいるかもしれない)と思うので、以下のパッチの様に
mew-cs-encode-arg-alist という変数を増やして、ユーザが default
の符号化方式を変えたいところがあったら、

(setq mew-cs-encode-arg-alist
      '((iso-2022-jp . japanese-shift-jis-unix)
	(iso-2022-kr . utf-8)))

などとするのはいかがでしょうか。

-- 
白井秀行 (mailto:shirai at example.com)
-------------- next part --------------
--- mew-mule.el.orig	Fri Sep 29 21:15:44 2000
+++ mew-mule.el	Fri Oct  6 21:30:08 2000
@@ -91,7 +91,9 @@
   (` (if (nth 4 (, ecsdb)) (nth 4 (, ecsdb)) (mew-ecsdb-cs (, ecsdb)))))
 
 (defmacro mew-ecsdb-cs-for-arg (ecsdb)
-  (` (if (nth 5 (, ecsdb)) (nth 5 (, ecsdb)) (mew-ecsdb-cs (, ecsdb)))))
+  (` (or (cdr (assoc (mew-ecsdb-cs (, ecsdb)) mew-cs-encode-arg-alist))
+	 (nth 5 (, ecsdb))
+	 (mew-ecsdb-cs (, ecsdb)))))
 
 ;;
 
--- mew-vars.el.orig	Wed Oct  4 18:11:52 2000
+++ mew-vars.el	Fri Oct  6 21:47:02 2000
@@ -1708,6 +1708,11 @@
 (defvar mew-prog-grep "grep")
 (defvar mew-prog-grep-opts '("-e"))
 
+(defcustom mew-cs-encode-arg-alist '()
+  "*Alist of coding-system for argument encoding rule."
+  :group 'mew-env
+  :type '(repeat (cons symbol symbol)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
 ;;; Text/Html
--- mew-win32.el.orig	Thu Sep 21 10:11:54 2000
+++ mew-win32.el	Fri Oct  6 21:35:00 2000
@@ -92,6 +92,17 @@
     "/[^./]+$"
     'script-process-argument-editing-function 'last)))
 
+
+;; argument encoding rule for Japanese.
+(cond
+ ((mew-coding-system-p 'japanese-shift-jis-unix)
+  (setq mew-cs-encode-arg-alist
+	'((iso-2022-jp . japanese-shift-jis-unix))))
+ ((mew-coding-system-p '*sjis*unix)
+  (setq mew-cs-encode-arg-alist
+	'((*iso-2022-jp* . *sjis*unix)))))
+
+
 ;; common programs.
 (setq mew-prog-shell        shell-file-name)
 


Mew-dist メーリングリストの案内