emacs、とあるファイルの文字コードが変だったので調べてみた

uchiumiです。

先日、とあるhtmlファイルを編集しようとしてemacsで開いたところ、文字化けてしまっていました。
文字コードの表記がshift-JISになっていた(本来はEUC-JP)ので、このファイルだけ文字コードがおかしいのかと思い調べてみたのですが、ファイルの文字コードはEUC-JPだし、他のエディタ(cotEditor等)で開いた時は文字化けません・・・何故?

と、これを解決した時のお話です。

原因

emacsの機能で、下記の様な記述があるファイルの場合にcharsetに設定されてる文字コードをみて、その文字コードのファイルだと解釈してしまうためでした。

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

解決策

原因である機能を無効にするために、下記の設定をemacsの設定ファイルに書いてあげます。

  (setq auto-coding-functions nil)
    または、
  (delete 'sgml-html-meta-auto-coding-function auto-coding-functions)

参考サイト
Emacs の文字コード自動判別を学ぶ

delete~の方は後で見つけたのですが、一緒にはまっていた先輩にきいてみたところ、こちらの方が影響度が限定されていていいかもしれない、とのことでしたので、私はdelete~の方を設定してみました。

解決するまで

初めに先輩に相談したときは、
「なにか変な文字(特殊記号等)が記述してあって、その所為で文字コードがおかしくなり文字化けることがある」
とのことでした。
というわけなので原因の文字を探すため、文字列を消して読み込んでを繰り替えしていたのですが、境目はどうやらcharset・・・。
どうやら原因は特殊記号ではないみたいでした。

次にemacsが得意な先輩に相談しにいくと、どうやらもう相談され済みでした。
しかしemacsの機能である、ということはわかったのですが、それを無効にする設定はまだ未確認とのことでした。

もしかしたら私の前に相談していた先輩が解決したかもしれない!と思い聞きにいってみたのですが、まだ未解決とのこと。
なのでこれは探すしかないとググっていると、一部を聞いていた別の先輩が上記のサイトを発見して教えてくれました!
どうやらauto-coding-functionsの所為だったみたいですね。
上記の設定をしてあげると、見事文字化けせずにファイルを読み込むことができました!
私はemacsを使って仕事をしているので、とても助かりました。


しかし設定ファイルに設定を書くたびにemacsの愛着度が増しますね(笑)
ちなみに先日はタグジャンプの設定もしてみました♪

これからもemacsと共に成長しながら仕事や勉強を頑張っていきたいと思います!

1 件のコメント so far »

  1. by hirafuji, on 10.31.08 @ 3:16 PM

     

    毎度毎度参考になるエントリーをありがとうございますm(__)m
    早速まねっこさせていただきますです!

Comment RSS · TrackBack URI

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree