emacsのset-buffer-file-coding-systemで文字コードを変換できないことが結構あります。解決方法があれば教えて下さい。かなり困っています。


具体的に以下のようなことがしばしば発生します。
1. 他の人が作成したファイルを特定の文字コードに変換しようとしても何故かできない。
2. php-modeは必ずEUC-JPで開くように設定しているのですが、編集中にどこかのタイミングで勝手にUTF-8に変換されてしまい、EUC-JPに戻そうと思っても戻らない。

set-buffer-file-coding-systemを実行した場合、左下のバーに表示される文字コードは一時的に希望する文字コードに変わるのですが、保存した瞬間に変換前の文字コードに自動的に戻ってしまいます。環境はubuntu hardy + emacsです。入力はSCIMを利用しています。
(gedit等を利用すれば普通に変換できるのですが、emacsが日本語に弱いのでしょうか?)

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2008/05/21 17:02:10
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rubikitch No.4

回答回数120ベストアンサー獲得回数22

ポイント50pt

現在の安定版Emacs22だとどうなりますか?

もしEmacs22で正常ならば開発版だからこその問題でしょう。

それでもおかしいならば「M-x describe-coding-system」で文字コードの設定を見てみましょう。

あとは「M-x apropos coding.+alist$」で変数をチェックしてみましょう。

id:tomoyuki28jp

> 現在の安定版Emacs22だとどうなりますか?

> もしEmacs22で正常ならば開発版だからこその問題でしょう。

まさにこれが原因だったようです。

とても助かりました。

度重なるご回答どうもありがとうございました。


追記:

emacsスナップショットじゃないとアンチエイリアスがかからないので、それだけが心残りです。。

2008/05/19 00:56:47

その他の回答3件)

id:redwing1 No.1

回答回数541ベストアンサー獲得回数3

ポイント30pt

emacsの日本語文字コードは完全ではないので、CJKなどを入れるとましになります。

id:tomoyuki28jp

ご回答ありがとうございます。

参考にさせて頂きます。

2008/05/19 00:19:28
id:rubikitch No.2

回答回数120ベストアンサー獲得回数22

ポイント30pt

「# -*- coding: euc-jp -*-」のようなmagic commentを入れると必ずその文字コードになります。あるいは「Local Variables」セクションに「coding: euc-jp」を入れるという手もあります。

あと、Emacsのバージョンはなんですか?22以降はユニコードのサポートが強化されたので21以前ならば22にアップグレードすることをおすすめします。

保存した瞬間に文字コードが戻ってしまうということは、すでにmagic commentかLocal Variablesセクションが書かれていると思います。

id:tomoyuki28jp

ご回答ありがとうございます。

いつもブログ拝見させて頂いております!

magic commentとLocal Variablesについては検証をしてみて、コメントにて結果を報告させて頂きます。

ちなみにOSはUbuntu hardyでemacsは最新版のemacs-snapshotを利用しております。

ご回答ありがとうございました。

今後とも宜しくお願い致します。

追記:

コメント追加しました

2008/05/19 00:35:04
id:redwing1 No.3

回答回数541ベストアンサー獲得回数3

ポイント22pt

変換だけだったら,nkfとか使ったほうが早い。

それとbuffer とfileは別だと思います。

id:tomoyuki28jp

> 変換だけだったら,nkfとか使ったほうが早い。

最悪nkfとかで変換はできるのですが、わざわざコマンドラインで変換してからっていうのも面倒なので、

emacs上で解決したいと思い、質問させて頂きました。(emacs上で変換できるはずだろうと思ったので。)


> それとbuffer とfileは別だと思います。

その通りですね。

今回の質問の意味はファイルを特定の文字コードで保存できなくて困っている、ということです。

ご回答ありがとうございました。

2008/05/19 00:42:47
id:rubikitch No.4

回答回数120ベストアンサー獲得回数22ここでベストアンサー

ポイント50pt

現在の安定版Emacs22だとどうなりますか?

もしEmacs22で正常ならば開発版だからこその問題でしょう。

それでもおかしいならば「M-x describe-coding-system」で文字コードの設定を見てみましょう。

あとは「M-x apropos coding.+alist$」で変数をチェックしてみましょう。

id:tomoyuki28jp

> 現在の安定版Emacs22だとどうなりますか?

> もしEmacs22で正常ならば開発版だからこその問題でしょう。

まさにこれが原因だったようです。

とても助かりました。

度重なるご回答どうもありがとうございました。


追記:

emacsスナップショットじゃないとアンチエイリアスがかからないので、それだけが心残りです。。

2008/05/19 00:56:47
  • id:tomoyuki28jp
    質問者です。
    もしかしたら表示エンコーディングの方が間違っているだけで正常に変換されているかもしれない可能性が出てきました。
    ちょっと調べてみて分かり次第、コメントで報告させて頂きます。
  • id:tomoyuki28jp
    rubikitchさんへ

    ファイルにはmagic commentもLocal Variablesも記載されていないのに、文字コードの変換がうまくいっていないようなので、今回の問題は別のところにあるかと思います。

    ただ最終手段として、ファイルごとにmagic commentとLocal Variablesを記述すれば強制的にそのファイルの文字コードをセットできるという点、勉強になりました。

    どうもありがとうございます。
  • id:tomoyuki28jp
    現在のemacs-snapshotは他にも不安定なところがいくつか見受けられたので、アンチエイリアスを諦めて
    安定版に戻ろうかなぁと考えています。
  • id:redwing1
    だからbufferとfileはちがうって。

この質問への反応(ブックマークコメント)

トラックバック

  • Emacs23の日本語の扱いは不完全らしい 日本語を含むinfoが文字化け - とりあえず暇だったし何となく始めたブログ emacsのset-buffer-file-coding-systemで文字コードを変換できないことが結構あります
  • emacs23は使えない 今までアンチエイリアスの為だけにemacs23をx windowで使ってたんだけど、次のような理由でemacs23は使えないという結論に達した。 文字コードの誤認 (magic comment書けば回避で
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません