人気ブログランキング | 話題のタグを見る

Emacs文字コード自動認識が失敗

Emacsの文字コード変換って

書いてみたら長くなったので、トラバにします。

RedHat9は使ったことがないのですが、
UTF-8に対応してないってことは、ないんじゃないでしょうか。
勝手な想像なのですが。

◎方法1


コメントにも書きましたが、
ファイルの先頭に
-*- coding: euc-jp -*-

と、書きます。
他に、
-*- html-mode -*-

とか書いておくと、拡張子がhtmlやhtmでなくても
メジャーモードがhtmlになり、大変便利。

プログラムのファイルの場合は、
こんなのが書いてあると実行できませんので、
コメントアウトして、
#-*- perl-mode -*-

なんて書いたりします。
これでもモードの自動判定は有効になります。

追記:
指定をまとめて書いておくと便利です。
その場合、セミコロンで区切ります。
私はいつもこんな感じ。
-*- coding:euc-jp; mode:perl; comment-column:50; -*-


◎方法2


ファイルを開いてから、C-x RET f するのは、
現在開いているファイルのエンコーディングを指定して保存する時に
使っています。
これから開くファイルには、効果がないんじゃないかと思います。

C-x f で、開きたいファイルのあるディクトリを選んで
RET を押し、dired を起動します。
Emacsの画面に、そのディレクトリ以下のファイル一覧が出ます。
開きたいファイルの行頭にカーソルを合わせて、
C-x RET c (universal-coding-system-argument) を実行。
エンコーディング名をUTF-8などと指定してリターンすると、
今度はコマンドを聞かれるので、
そのままリターンすると、ファイルが開かれるはず・・・なのですが、
私のRH7ではダメでした。

ソースを見てみないとなんとも言えないのですが、
diredのバッファからのファイル名の切り出しに失敗している風なので、
diredのフォーマットが以前と変わっちゃってるのかもしれません。
今度デバッグしてみます。
パッチなどが作成できたら、お知らせしますね。

◎方法3


私はこの方法でやっています。
上記2の方法をプログラムで書いちゃって、
キーバインドしておく方法。

以下を .emacs に書いたり、
別ファイルに書いて、load-file します。
(defun find-file-utf8 ()
 (interactive)
 (let ((coding-system-for-read 'utf-8-unix)
     (coding-system-for-write 'utf-8-unix))
  (call-interactively 'find-file)))
(global-set-key "\C-xa8" 'find-file-utf8)

C-x a 8 をすると、find-file と同じプロンプトが出るので、
ファイルを指定するだけです。

私はこの他に、ucs-2、utf-16、gb、big5、kr、latin1を
全て用意しておいています。
キーバインドはこんな感じにしています。
(global-set-key "\C-xa2" 'find-file-ucs2)  ;; ucs-2
(global-set-key "\C-xa4" 'find-file-utf16)  ;; ucs-4
(global-set-key "\C-xa6" 'find-file-utf16)  ;; utf16
(global-set-key "\C-xa8" 'find-file-utf8)  ;; utf-8
(global-set-key "\C-xag" 'find-file-gb)  ;; gb-2312
(global-set-key "\C-xab" 'find-file-big5)  ;; big5
(global-set-key "\C-xak" 'find-file-kr)  ;; euc-kr
(global-set-key "\C-xae" 'find-file-eucjp)  ;; euc-jp
(global-set-key "\C-xas" 'find-file-sjis)  ;; sjis
(global-set-key "\C-xaj" 'find-file-jis)  ;; jis =iso-2022-jp
(global-set-key "\C-xa1" 'find-file-latin1)  ;; latin1 = iso-8859-1

※ ucs-4は実質utf-16で開いて問題ないので、utf-16のバインドが2つあります。
※ 文字コードの指定で、「le」と「be」と両方あるものがありますが、CPUによって違います。

とんちんかんな事を書いていたらすみません。
上記で、間違っている点、知りたい点を教えて頂ければ、
もうちょっとちゃんとお答えできるかもしれません。

コメントを頂いているみなさまへ
今日は頭痛がひどいので、
もう帰宅します。
頂いたコメントへのお返事が途中ですが、
明日、お返事させていただきます。
おやすみなさい(早っ)。
by xiaoxia | 2004-04-21 21:20 | コンピュータ関係
<< WWWCでblogの更新チェック 読んだ本・漫画:なるたる、文章読本 >>