UTF8で半角カナが豆腐になる件
環境
This is Meadow-3.00-dev (KIKU) based on GNU Emacs 22.1.1 (i386-mingw-nt5.1.2600) of 2007-07-08 on CUBE URL: http://svn.meadowy.org/Meadow/trunk Last Changed Rev: 4213 Last Changed Date: 2007-07-07 09:39:18 +0900 (Sat, 07 Jul 2007)
解決策
以下を.emacsに追加。
だが,これによりどんな副作用があるかはわかりまへん。
;; UTF-8 において,半角カナをmule-unicode-e000-ffffに変換させないため (setq-default translation-table-for-input nil)
なぜにこれで解決するのか?
http://www.bookshelf.jp/2ch/unix/1156781437.html
の20から30くらいに同じ問題で困っていた人がいたみたいです。
3330sage2006/09/04(月) 12:49:19 translation-table-for-input に katakana-jis0201 から mule-unicode への 変換が定義されているためのようです。 ためしに translation-table-for-input を nil にしたところ、katakana-jis0201 が挿入されました。
要するに,Windows 上のIMEから,Meadowに入力渡すときには,
まだ半角カタカナ。
Meadowが画面に表示する前に,ごにょごにょするってことか?
あと,こんなんとか。
(http://www.m17n.org/mlarchive/mule-ja/200309/msg00002.htmlから引用させてもらいまふ)
utf-translate-cjk-mode は mule-unicode-XXXX-YYYY のどの文字 セットにも格納できない Unicode文字を JIS/GB/BIG5/KSC 等に translate するものなんですが、それらの記号は Unicode では U+FF0? にあり、mule-unicode-e000-ffff に格納できるため、 JISX に translate されないのです。 例えば、以下を実行すればちゃんと表示はできるようになるはずで す。 (require 'disp-table) (dolist (elt '((#xff01 . ?!) (#xff03 . ?#) (#xff04 . ?$) ;; ... (#xff5e . ?〜))) (aset standard-display-table (decode-char 'ucs (car elt)) (vector (cdr elt)))) でも、 mule-unicode-e000-ffff の文字の文字幅はすべて1なので fill 等でちょっと不具合が発生します。
後半のコードを評価しても変化がわからんかったですが,
豆腐をM-x describe-char すると,たしかにmule-unicode-e000-ffffに,
マップされてました。
戯れ言
いやー,時間かかりましたで。ほんと遠回りしたっす。
utf-translate-cjk-set-unicode-range をいじってみたり,
utf-8.elの中身を見てみたり。
結局答えはWebにありましたお。orz
過去ログを保存しているBookshelf.jpさんに感謝,感謝。
M-x describe-fontset すると,jisx0201にフォントセットが
割り当てられてないので,あれー? あれー?って思ってました。
sjisでは半角カナが入力できて,豆腐にならないこと。
ほいで,そのファイルをMeadow上で,UTF8に変換すると,
オッケー。さらには,再度そのファイルを開いても,
豆腐になっていないこと。
これらにもっとはやく気がついていれば,(ry
まとめ
- 文字コードはむずい。
- M-x describe-char を覚えた!! (これは便利そうだし,おもしろいねぇ。)
- M-x describe-fontset を覚えた!! (これも便利そうだぽ)
- こないだの全角記号が豆腐になる件と合わせて,一応,問題は解決された・・・はず。
- あとで容易に利用できるように,こないだの分も合わせて,残しておきます。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; U+0080 - U+2E7F の文字を CJK にデコード ;; http://nijino.homelinux.net/emacs/utf-cjk.html ;; JIS拡張漢字(JIS X 0213) ;; http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0213/jisx0213-1.html (utf-translate-cjk-set-unicode-range '((#x00a2 . #x00a3) ; ¢, £ (#x00a7 . #x00a8) ; §, ¨ (#x00ac . #x00ac) ; ¬ (#x00b0 . #x00b1) ; °, ± (#x00b4 . #x00b4) ; ´ (#x00b6 . #x00b6) ; ¶ (#x00d7 . #x00d7) ; × (#X00f7 . #x00f7) ; ÷ (#x0370 . #x03ff) ; Greek and Coptic (#x0400 . #x04FF) ; Cyrillic (#x2000 . #x206F) ; General Punctuation (#x2100 . #x214F) ; Letterlike Symbols (#x2190 . #x21FF) ; Arrows (#x2200 . #x22FF) ; Mathematical Operators (#x2300 . #x23FF) ; Miscellaneous Technical (#x2500 . #x257F) ; Box Drawing (#x25A0 . #x25FF) ; Geometric Shapes (#x2600 . #x26FF) ; Miscellaneous Symbols (#x2e80 . #xd7a3) ; East Asian Scripts (#xff00 . #xffef))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; UTF-8 において,半角カナをmule-unicode-e000-ffffに変換させないため (setq-default translation-table-for-input nil)
- 最後に。私,半角カタカナはまず使わない。