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によって違います。

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

コメントを頂いているみなさまへ
今日は頭痛がひどいので、
もう帰宅します。
頂いたコメントへのお返事が途中ですが、
明日、お返事させていただきます。
おやすみなさい(早っ)。
[PR]
Commented by cisco. at 2004-04-21 21:30
すごい!意味分かんないw
Commented by ririko_karen at 2004-04-21 21:37
頭痛ですか? 私はやっと治まりました。
季節のせいでしょうかね~ お大事に。
Commented by code_air_edge at 2004-04-21 22:16
こちらでもお礼を言わせて頂きますね、ありがとうございました!
あと、これに関する返信はTBにてさせて頂きます、御了承ください。
Commented by iceday at 2004-04-21 22:27
はは~ん 要は包丁は暖めてからパンを切ると切りやすいと
そういうことですね?
Commented by sprewell8_daisuki at 2004-04-22 11:13
うわ、詳しい~。
私、LinuxUnixは全然専門外です。エンコードとかも。
やっぱxiaoxiaさんすごいですね~!ソンケー。

で、頭痛がするときは、頭痛薬を寝るに限りますよ。
お大事にしてくださいね~。
Commented by xiaoxia at 2004-04-22 18:00
●cisco.さま
PHPってことは、Linux+apacheでしょうか。普通のUNIX系プログラマはviを使うでしょうから、Emacsなんてわからなくても全然問題ナシですよ。もしEmacsをお使いでしたら、何かトラブルがあったら鍵コメして下さい。お力になれるかもです。

●ririkoさま
たまーに来るんです。目から来る頭痛なんですよ。水曜日はコンタクトお休みでメガネにする日(眼科医に言われた)ので、それも悪かったのだと思います。

●code_air_edgeさま
私も自宅マシンはAthlon1700+で某OSと共存させているので、大変親近感を持っておりました。お役に立てたようで、良かったです(^-^)

●iceさま
素晴らしい名言!その通りです。良いプログラムは、どんなパンを何回切るか、まな板の大きさ、包丁の大きさ、暖め具合などをきっちり想定して、最小限のコストでパンを切れるのです。

●スプリーさま
お陰様で、今日は元気ですo(^-^)o UNIX系とか多言語とかが専門なんですよ。Winはからきしダメです。winなかたの方が、時流に合っているしソンケーです!
Commented by cisco. at 2004-04-22 21:35
PHPはapacheとwindowsでやってます。
やっとデータベースとのやり取りが分かるようになりました。
でも、まだまだ仕事させてもらえてません(^_^;)
頑張らねば!
Commented by xiaoxia at 2004-04-23 18:26
●cisco.さま
実務はまだ先でしょう(^^;; 私なんか実務に就いたのは9月でしたよ。windowsでしたら、Emacsなんて全く使わないですね。

実は、私も来月からの派遣先で、PHP必須と言われてしまいました。他に、PerlとRubyもできたら尚可、だそうです。なので、これから新たにPHPの勉強を始めます。独学なので、ヨチヨチですが、一緒に頑張りましょうo(^-^)o
Commented by code_air_edge at 2004-04-23 21:48
こんばんは。
Emacsで -*- coding: utf-8 -*-とファイルの先頭に書いておいたら、大成功でした!
いや〜、軽く感動しました!ありがとうございました〜!!!
Commented by xiaoxia at 2004-04-23 23:00
●code_air_edgeさま
それはそれは良かったです。

今日はRedHat8のインストールでトラブりまくっておりました(笑)色々参考にさせて頂きますので、これからもよろしくお願いします。
Commented by prigogine at 2004-04-28 16:30
私もemacsは使うところしか使いません...
方法3のエイリアス化しか使ったことがありません。

>私のRH7ではダメでした。

どうやってインストールされたのか分かりませんが、
var配下のインストールログには何も残っていないのですか?
Commented by xiaoxia at 2004-04-28 18:21
えー、もう大分前にインストールしたので、ログの類は残っていませんでした。動作に不要なファイルは、どんどん掃除してしまうクセがあるのです。
ですので、ちょっとソースを追ってみました(ver 20.7.1)。
dired.el 1357 行目で、diredで表示される行(1行=1ファイル)の正規表現が指定されているのですが、現在の私のdiredで表示される行に、この正規表現がマッチしていないのが原因でした。これを直したら、方法2も使えるようになりました。
by xiaoxia | 2004-04-21 21:20 | コンピュータ関係 | Comments(12)

ダメ女プログラマ&主婦&腐女子&バイオリン弾き


by 小霞