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

Re: BITMAP-MULE vs Mule-UCS



From:  Katsumi Yamaoka <yamaoka@namazu.org> さん曰く
Subject: [emacs-w3m:01513] Re: BITMAP-MULE vs Mule-UCS
Message-ID: <78lmjj22c0.fsf@karin.namazu.org>
Date: Thu, 13 Sep 2001 12:31:54 +0900

中川さん> ;; 奥西「ふ」師匠(こちらあたりでの通り名は「元プリンス様」
中川さん> ;; かな)がいらっしゃれば一発回答だと思うのですが…

山岡さん> ;; ここにはいらっしゃらないと思いますが、Wanderlust が CVS 管理
山岡さん> ;; になったころからお見かけしませんね。

;; ですねぇ。。。

中川さん> ついでに(ここでは多分ふさわしくない)質問をさせて下さい。
中川さん> Mule 4.0の状態(emacs-20.7-mule-4.1.patch or
中川さん> emacs-20.7-mule-4.1a.patch を当てていない状態)で Mule-UCS
中川さん> をロードしても問題ないのでしょうか?
中川さん> UTF-8/16 の auto detect が出来ないだけ、と 
中川さん> Mule-UCS-0.84/lisp/READMEにあるようなので、多分問題ないのだ
中川さん> と思いますが。

山岡さん> ううむ、README に書いてある以上のことは知りませんし、コトあるご
山岡さん> とに Emacs を再 build しているのでなおさらわかりません。^^;;
山岡さん> ですが、こと charset の枠の取り合い問題に関しては関係ないような
山岡さん> 気はします。

Solaris 2.4上の 
emacs-version => "20.7.1"
mule-version => "4.0 (花宴)"
emcws-version => "20000614"

で、
(require 'un-define)
(require 'un-tools)
(set-language-environment "Japanese")
(set-default-coding-systems 'euc-japan)

とすると、coding-system の priority が

Priority order for recognizing coding systems when reading files:
  1. iso-2022-jp (alias: junet)
  2. japanese-iso-8bit (alias: euc-japan-1990 euc-japan euc-jp)
  3. japanese-shift-jis (alias: shift_jis sjis)
  4. iso-2022-jp-2 
  5. iso-latin-1 (alias: iso-8859-1 latin-1)
  6. iso-2022-7bit 
  7. iso-2022-8bit-ss2 
  8. emacs-mule 
  9. raw-text 
  10. chinese-big5 (alias: big5 cn-big5)
  11. no-conversion (alias: binary)

となります。これは特に問題ないと思うのですが、

(require 'jisx0213) ;; <= これです。
(require 'un-tools)
(set-language-environment "Japanese")
(set-default-coding-systems 'euc-japan)

だと、

  1. iso-2022-jp-3-compatible 
  2. utf-8 
  3. euc-jisx0213 
  4. iso-2022-jp-2 
  5. iso-latin-1 (alias: iso-8859-1 latin-1)
  6. iso-2022-7bit 
  7. iso-2022-8bit-ss2 
  8. emacs-mule 
  9. raw-text 
  10. japanese-shift-jis (alias: shift_jis sjis)
  11. chinese-big5 (alias: big5 cn-big5)
  12. no-conversion (alias: binary)

となり、そのままだと普通の shift-jis の判定に失敗するようになり
ます。なんで、japanese-shift-jisx0213 が入らないんだろう。しかも、
raw-text の方が上。

## 普段使っていない WS 上の使っていない Emacs なので、全然理由は
## 考えていなかったりする ^^;;;

ちなみに、Emacs-21 だとこうなります。

Priority order for recognizing coding systems when reading files:
  1. utf-16-le 
  2. utf-16-be 
  3. utf-8 
  4. japanese-iso-8bit (alias: euc-japan-1990 euc-japan euc-jp)
  5. iso-2022-jp-3-compatible 
  6. japanese-shift-jisx0213 (alias: shift_jisx0213 shift_jisx0213-unix shift_jisx0213-dos shift_jisx0213-mac)
  7. iso-2022-jp-2 
  8. iso-latin-1 (alias: iso-8859-1 latin-1)
  9. iso-2022-7bit 
  10. iso-2022-8bit-ss2 
  11. emacs-mule 
  12. raw-text (alias: mew-cs-text mew-cs-text-lf mew-cs-text-crlf mew-cs-text-cr mew-cs-text-net)
  13. chinese-big5 (alias: big5 cn-big5)
  14. no-conversion (alias: binary)

とここまで書いたら、岡崎さんのメールが来たので、ぼくもやってみま
した。

上記の Mule-4.0 (jisx0213 あり/なし)で

(let ((string "あかるい"))
  (decode-coding-string (encode-coding-string string 'utf-8) 'utf-8))
"あかる"

(let ((string "白井秀行"))
  (decode-coding-string (encode-coding-string string 'utf-8) 'utf-8))
"白"

う〜〜〜ん。

(let ((string "あかるい"))
  (with-temp-buffer
    (set-buffer-multibyte t)
    (insert string)
    (set-buffer-multibyte nil)
    (encode-coding-region (point-min) (point-max) 'utf-8)
    (set-buffer-multibyte t)
    (decode-coding-region (point-min) (point-max) 'utf-8)
    (buffer-string)))
"あかるい"

(let ((string "白井秀行"))
  (with-temp-buffer
    (set-buffer-multibyte t)
    (insert string)
    (set-buffer-multibyte nil)
    (encode-coding-region (point-min) (point-max) 'utf-8)
    (set-buffer-multibyte t)
    (decode-coding-region (point-min) (point-max) 'utf-8)
    (buffer-string)))
"白井秀行"

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)