coding-system iso-2022-7bit and iso-2022-jp

Yoshiki Hayashi t90553 @ mail.ecc.u-tokyo.ac.jp
1999年 12月 2日 (木) 18:28:45 JST


Mikio Nakajima <minakaji @ osaka.email.ne.jp> writes:

> At 29 Nov 1999 19:47:53 +0900,
> Yoshiki Hayashi wrote:
>  
> > japanese.el はたぶん同じです。
> > 
> > で、そもそも、私の環境では、
> > (coding-system-property 'iso-2022-jp
> > 'input-charset-conversion)
> > が nil を返すので、and の続きのcopy-coding-system は実行され
> > ない、というのが私が一番言いたかったことです。
> 
>   えぇっと、多分林さんがおっしゃりたいことをぼくは全く分っていません
> (^^;;。

ごめんなさい。中島さんのおっしゃりたいことがわかっていません
でした。m(..)m

> (make-coding-system
>  'iso-2022-jp 'iso2022
>  "Coding-system used for communication with mail and news in Japan."
>  '(charset-g0 ascii
>    short t
>    seven t
>    input-charset-conversion ((latin-jisx0201 ascii)
> 			     (japanese-jisx0208-1978 japanese-jisx0208))
>    mnemonic "MULE/7bit"
>    ))
> 
> を含んでいる japanese.el は一緒なのに、
> 
> (coding-system-property 'iso-2022-jp 'input-charset-conversion)
> 
> が nil を返す、というのは正しいのでしょうか?  それとも iso-2022-jp が
> lisp/mule/japanese.el 以外で define されている、ということ?

正しくないです。

中島さんの testcase に (require 'mcharset) があるのを完全に
見落としていました。

(featurep 'pces-xm)
--> nil

(with-temp-buffer
  (let ((coding-system-for-read 'binary))
    (insert-file-contents mesg)
    (re-search-forward "^$")
    (forward-line)
    (beginning-of-line)
    (narrow-to-region (point) (point-max))
    (require 'mcharset)
    (decode-coding-region (point-min) (point-max) 'iso-2022-jp-dos)
    (find-charset-region (point-min) (point-max)) ))
--> (japanese-jisx0208 ascii) ; 化けない。

の時点で
(featurep 'pces-xm)
を評価すると、私の環境では t になります。
つまり、

(progn
  (and (coding-system-property 'iso-2022-jp 'input-charset-conversion)
       (copy-coding-system 'iso-2022-7bit 'iso-2022-jp))
  (and (coding-system-property 'iso-2022-jp-dos 'input-charset-conversion)
       (copy-coding-system 'iso-2022-7bit-dos 'iso-2022-jp-dos)) )

の時点では、既に
(coding-system-property 'iso-2022-jp 'input-charset-conversion)
は nil を返します。
# これで勘違いをしてしまったみたい。(^^;;
インストールされている APEL のバージョンは ... わかりません。:-)

(require 'mcharset)
(require 'mcs-e20)
(require 'poem)
(require 'pces)
(require 'pces-xfc)
(require 'pces-xm)

という経路で呼ばれています。
最新版だと、

mcs-e20.el が
(eval-when-compile
  (require 'static)
  (require 'poem)
  )

となっているために、ここでは呼ばれないようです。
で、とりあえず中島さんと私の環境での APEL の差異はわかったの
ですが、やはり再現しません。
# APEL のバージョンアップは、講義が終わってもおそらくまだ気
# 力が残っていると予想される明日にやってみます。

(require 'mcharset)
をはずして test case を評価しても、全く同じ結果になるのでしょ
うか? 後、iso-2022-jp と iso-2022-jp-dos じゃなくて、
iso-2022-7bit, iso-2022-7bit-dos で試してみてもだめでしょう
か。また、
(coding-system-property 'iso-2022-jp 'output-charset-conversion)
の値はどうなっていますでしょうか。
# input-charset-conversion は内部 code に変換しているときに
# 使われるはずなので、これが影響しているとは考えにくいです。
# そうすると、copy-coding-system に虫がいるのかもしれません。

-- 
Yoshiki Hayashi




More information about the APEL-ja mailing list