質問: "GNU Emacs 24.4.1 (i686-pc-cygwin) of 2015-02-01 on gnupack"を使っています。 UTF-8などUnicode系の文字コードからCP932に変換する時に、波ダッシュ(U+301C)が変換できません。 CP932の波ダッシュ(0x8160)がUnicodeの全角チルダ(U+FF5E)に変換されるのは、Windowsを使っている限り受け入れるしかないとしても、Unicodeの波ダッシュ(U+301C)がCP932の波ダッシュ(0x8160)に変換されないのは不便だと思いました。 Unicodeの波ダッシュ(U+301C)をCP932の波ダッシュ(0x8160)に変換するように設定するには、どうすれば良いでしょうか? #ググるとcoding-system-putで:decode-translation-tableを書き換えればできそうと思ったのですが、Emacs内部での文字コードの扱い方もEmacs Lispもわからないので...
回答: 以下、heliac2001さんの回答+自分の補足をまとめました。 ``` ;; Unicode(内部コード)→CP932変換時に波ダッシュ(U+301C)を波ダッシュ(0x8160)に変換するよう設定する。 ;; 波ダッシュと同様の変換問題のある文字も変わる。 ;; 対象文字は、"lisp/language/japanese.el"で定義されている ;; japanese-ucs-jis-to-cp932-mapを参照。 (coding-system-put 'cp932 :encode-translation-table (get 'japanese-ucs-jis-to-cp932-map 'translation-table)) ```