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

[plamo:08465] Re: Emacs20.7+Gnus5.7 の文字化け



;; Plamo に特有な話ではないと思いますけれど、すみませんがもう少
;; し続けさせてください。

>>>>> plamo の No. 08461
>>>>> Message-Id: <20010125185433G.cyamauch@phyas.aichi-edu.ac.jp> で、
>>>>> "山内" == cyamauch@phyas.aichi-edu.ac.jpさま曰く...

山内>   結局,.emacsでは coding-system-for-… はいじらずに,
山内> 他で対策するのが一番だと思いました.

はい、 coding-system-for-(read|write) は coding system を指定す
るための最強の方法ですので、これを直接いじってしまうと、他の方法
では coding-system をいじれなくなってしまいます。

山内> (set-default-coding-systems 'euc-jp-unix)
山内> の設定があるので,CやFORTRANモードの設定は不要でしたね.
山内> ここのMLに流したのは不適切だったと思います.infoは元の
山内> infoファイルをeucに変換するとして,問題はyatexですね.

Info file の先頭に
     -*- Coding: euc-jp -*-
などと書いてあったり、 file の末尾に
     ;;; Local Variables: ***
     ;;; coding: euc-jp
     ;;; End: ***
などと書いて、 coding system を指定されているとまずいですが、
Info file が iso-2022-jp ならば、自動判定が働いて化けたりするこ
とは無いのではないかと思うのですが、そんなことはありませんか?

coding-system-for-read が nil になっていることを確認してから、
C-h i してみていただけないでしょうか?

山内> エレガントな方法でデフォルトをEUCにする方法があったら教
山内> えてください.よろしくお願いします.

(set-default-coding-systems 'euc-jp-unix) を書いておけば、これだ
けでほとんど問題が出ることは無いとは思いますが...

私が思う範囲で調子悪いことは...

1. 空のファイルや、 us-ascii だけのファイルを開いて、そこに日本
   語などを追加すると、どの coding-system で保存するのかを聞いて
   くるのが面倒。

2. 標準的な coding-system が異なっている環境のファイルを新規作成
   したときに、ついつい自分の default-buffer-file-coding-system
   で保存してしまい、悲しい思いをする。

くらいが、良く思うことなのですが、エレガントかどうかは別にして...

1. に関しては、これを解決するだけのために使うにしては、ちょっと
冗長ですが、このメイルの末尾につけたようなものを、どこかに書
いておいて、たとえば c-mode-hook に登録した関数に...

   (my-set-file-encoding 'euc-jp-unix)

を加えておくと、便利かもしれません。

;; 以下、宣伝になってしまいます。 ^^;;;

2. に関しては、主に MS-Windows が作業環境であり、そこから
ange-ftp を使ってターゲットである UNIX 上のファイルを編集したり、
iso-2022-jp で文書を書きたいプロジェクトがあったりする私にとって
は結構はまりがちでしたので、いろいろといじっていたのですが、ふと
思い立って、それらの code まとめてみたものがあります。 

http://www.nanap.org/pbf-mode.shtml にちょっとした文書があります
ので、興味がおありでしたらお試しください。
;; 0.x の間は、インターフェースをガラガラ変えるかも知れません。 ^^;;;

;; ちなみに下の code もその中の一部をちょっと編集したものです。
-- 
鈴木圭一 / keiichi@nanap.org
PGP finger print (DH/DSS)
0B32 B37E 6DE9 3BC1 68A4  4089 7AAF 2B03 ECBD 614B

-------- 8>< -------- 8>< -------- 8>< -------- 8>< --------
(defun pbf-buffer-file-coding-system-fixed-p ()
  (let ((buf-base (coding-system-base buffer-file-coding-system)))
    (not
     (or (and (eq buf-base 'undecided)
	      (not (eq (coding-system-base
			(car (detect-coding-region (point-min) (point-max))))
		       'undecided)))
	 (and (eq buf-base (coding-system-base
			    default-buffer-file-coding-system))
	      (not (eq (coding-system-base
			(car (detect-coding-region (point-min) (point-max))))
		       'undecided)))))))

(defun pbf-set-file-coding-system-for-write (cs)
  (let ((buf-base (coding-system-base buffer-file-coding-system)))
    (unless (or (pbf-buffer-file-coding-system-fixed-p)
		(and (eq buf-base (coding-system-base cs))
		     (eq (coding-system-eol-type buffer-file-coding-system)
			 (coding-system-eol-type cs))))
      (when (y-or-n-p (format "set coding system to %s instead of %s ? "
			      cs buffer-file-coding-system))
	(set-buffer-file-coding-system cs))))
  nil)

(defun my-set-file-encoding (cs)
  (add-hook 'local-write-file-hooks
	    `(lambda ()
	       (pbf-set-file-coding-system-for-write
		(quote ,cs)))))
-------- 8>< -------- 8>< -------- 8>< -------- 8>< --------

Follow-Ups
[plamo:08468] Re: Emacs20.7+Gnus5.7の文字化け, cyamauch
References
[plamo:08456] Re: Emacs20.7+Gnus5.7 の文字化け, Keiichi Suzuki
[plamo:08461] Re: Emacs20.7+Gnus5.7の文字化け, cyamauch

[検索ページ] [メール一覧]
Plamo ML 公開システム