HOME | Linux | XML | Network

EmacsでUTF-8を扱う

XML文書をUTF-8で

XML文書を記述する文字コードは、UTF-8が多く標準となっているようです。私は、XMLサーバにBXSを使い文字コードはShift_JISもしくはEUC-JPを利用していました。
卒論で、XMLを用いた多種端末対応個人データベース の研究をした際にiモード端末への対応を考えました。このとき、Shift_JISしか扱えないiモード向けコンテンツの仕様に合わせ文字コードの問題に悩まないようShift_JISに統一してXML文書を記述しました。サーバ側で出力時のエンコード指定をすればXML文書の文字コードは気にする必要はないのですが。

BXSにあるサンプルや、書籍等でみかけるXML文書の多くはUTF-8をエンコード指定しています。UTF-8はXML文書の文字コードとして標準となっているようです。そこで、今後、XML文書を記述する際には文字コードをUTF-8とすることにしました。

LinuxでUTF-8

普段、VineLinux上でEmacsをテキストエディタに使用しています。Emacsは様々な文字コードに対応しているのですがUTF-8には対応していません。そこで、EmacsをUTF-8に対応させることにします。
Linuxには、他にもUTF-8に対応したテキストエディタがあるようです。(調べてないので詳しくありません。) UTF-8に対応したテキストエディタに乗り換えるのも面倒なので、Emacsを拡張することにします。

EmacsをUTF-8に対応させるためには、Mule-UCSを用います。ダウンロードサイトから最新版 Mule-UCS-0.84.tar.gz をダウンロードします。以降の作業は、rootになる必要はありません。

ソースファイルを伸張します。
$ tar xvfz Mule-UCS-0.84.tar.gz
生成されたディレクトリに移動し、コマンドを実行します。
$ cd Mule-UCS-0.84
$ emacs -batch -l mucs-comp.el
以下のような、処理の模様が表示されます。
Remove old byte-compiled files-----
Compiling 1st stage-----
While compiling the end of the data in file /home/tsuyoshi/tmp/Mule-UCS-0.84/lisp/mucs.el:
  ** The following functions are not known to be defined:
    mucs-setup-conversion, mucs-refresh-conversion
Wrote /home/hogehoge/Mule-UCS-0.84/lisp/mucs.elc
Wrote /home/hogehoge/Mule-UCS-0.84/lisp/mucs-type.elc
・・・・・

これにより、Mule-UCS-0.84/lisp にun-define.elcが生成されます。 次に、$HOME/.emacs に以下の記述を追加します。

(setq load-path (cons "[un-define.elcのあるディレクトリパス]" load-path))
 (if (not (string-match "XEmacs" emacs-version))
  (progn
    (require 'un-define)
  ))
      
[un-define.elcのあるディレクトリパス] には、un-define.elcがあるディレクトリパスを記述します。たとえば、/home/hogehoge/lispにあるなら、 (setq load-path (cons "/home/hogehoge/lisp" load-path)) とします。

ファイルを開く

UTF-8でエンコードされたファイルを開くには、Emacsで以下を実行します。
C-x RET c utf-8 RET
C-x C-f [ファイル名] RET
Last Update Thu, 08/21/2003 3:34
HOME | Linux | XML | Network

Copyright © 2003 Rev System All right reserved.