UTF-8で保存して,「※」とか「〒」とかが豆腐になる

UTF-8でファイルを保存しているのですが,ファイルが上記文字を含んでいる場合,
再度そのファイルを開くと,豆腐文字になっているのを,最近気づいたのれす。
おそっ。

解決策

以下を.emacsに追記することで,豆腐文字を回避できます。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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)))

メモメモ

該当文字は,どうやら,JISX0213なるカテゴリ?に含まれるようだ。
別名JISX拡張漢字。漢字ではないが,いいのか?


で,上記(http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0213/jisx0213-1.html)の
表で,件の文字を調べてみると,

  • 「※」: 203B となり,上記のGeneral Punctuationの範囲。
  • 「〒」: 3012 となり,上記のEast Asian Scripts

とな。ふむふむ,たしかに範囲にはいってまんな。
General Punctuation(一般句読点)はともかく,西アジアスクリプトとはなんぞや?
http://inamidst.com/stuff/unidata/ から抜粋。

# U+0080 to U+00FF: Latin-1 Supplement
# U+0100 to U+017F: Latin Extended-A
# U+0180 to U+024F: Latin Extended-B

うーん,察するに,範囲がかぶっていて,Latin-1 Supplementとして判断されてしまうから,
それを,CJK(Chinese,Japanese,Korean)の範囲にtranslateするという感じかな?


といっても,おじさんUnicodeとUTF8の違いとかわかりまへんので,
もっそい勘で書いています。


とりあえず,これで豆腐文字については,解決された。
しかしこのとき,whitypigさんは,あらたな別の問題が,
潜伏していようとは気づきもしなかった。
というか,気づいた。
半角カナが豆腐になります。
・・・。
別日に調べまんがな。