[Mew-dist 1915] Re: can't guess charset

Mito mit at example.com
1997年 9月 8日 (月) 17:22:08 JST


※ "山" こと Kazu at example.com さんの
   『[Mew-dist 1904] Re: can't guess charset』からの引用です。

山> > * 半角カナでも guess できるべきななのか
山> 
山> そもそも、配送するための規格がありませんし。
山> 
山> また、RFC 1468(ISO 2022 JP)の改定版では、ISO 2022 JP は ISO 2022 に従っ
山> ていないと明記する予定ですが、それでも半角カナは ISO 2022 の重複符号化禁
山> 止の規則に反しており嫌です。
山> 
山> また、多言語に対応できる(ISO 2022 JP2 のような) charset を提案する予定で
山> すが、GR (8bit 空間)には ISO 8859 1 だけを割り当てたいと考えているので、
山> やっぱり 1 バイトカナは嫌です。

う〜ん。
これは guess 自体やらないほうがいいということですよね。
(半角カナが存在した場合、charset は不明(nil)のままにすると。)

山> > * guess できなかった場合はどういう風に対応すればいいのか
山> 
山> エラーを出して、ユーザに修正を求めるようにするべきでしょうね。

現状では mew-encode-text-magic でエラーにすると、「----」が
削除されたままになっておかしな状態になってしまいます。

こんなことに力をいれてもしょうがないので、エラーにはせずに、
charset は us-ascii にし、guess できかかったというメッセージ
を表示するようにしました。

ちなみに、半角カナは自分で入力したわけでなく、他の人のメール
を引用したら勝手に挿入されてきてしまったものです。
半角カナの「。」はパっと見た感じおかしくないので、しばらく原
因が分りませんでした。

ということで、やっぱり半角カナ→JIX X 0208 変換が必要だなと
思いますので、jisx0201.el から必要な部分を抜きだして、guess 
する前に変換するようにしてみました。

(add-hook 'mew-init-hook
          '(lambda ()
             (load-library "mew-jisx0201")
             (setq mew-convert-jisx0201katakana t)))

のように .emacs で指定し mew-jisx0201.el を適当な場所に置い
ておけば変換すると思います。

やっぱりこんなのは不要でしょうか?
-- 
9/8 17:17頃
NECソフトウェア新潟  水戸
mailto:mit at example.com

-------------- next part --------------
--- mew-encode.el	1997/09/05 12:06:12	1.1
+++ mew-encode.el	1997/09/08 07:39:35
@@ -148,6 +148,8 @@
   (cdr (mew-assoc-match cte mew-prog-mime-encode-text-switch 0))
   )
 
+(defvar mew-convert-jisx0201katakana nil)
+
 (defun mew-encode-text-magic (infile ctl cte)
   ;; return (file charset cte encopts)
   ;; If infile is 't', target is buffered.
@@ -169,6 +171,11 @@
 	   (insert-file-contents infile)
 	   )
 	)
+      ;; check katakana-jisx0201 Katakana and convert to japanese-jisx0208
+      (if (and mew-convert-jisx0201katakana
+               (fboundp 'mew-zenkaku-katakana-region))
+          (mew-zenkaku-katakana-region (point) (point-max)))
+
       ;; Target is now certainly bufferd.
       ;; Let's guess charset if not specified. The charset of CoverPage 
       ;; for just singlepart(buffered) is always guessed.
@@ -177,6 +184,13 @@
       ;; charset is guessed as ISO-8859-1.
       (if (null charset) 
 	  (setq charset (mew-charset-guess-region (point) (point-max))))
+
+      ;; cannot guess charset
+      (if (null charset)
+          (progn
+            (message "Cannot guess charset. Confirm charset!!")
+            (setq charset "us-ascii")))
+      
       ;; Guess cte for mewencode executed later.
       (if cte
 	  (setq encopts (mew-encode-get-topts cte))
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: 無し
型:         application/octet-stream
サイズ:     3836 バイト
説明:       mew-jisx0201.el
URL:        <http://www.mew.org/pipermail/mew-dist/attachments/19970908/e12f52d6/attachment.obj>


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