ラベル emacs の投稿を表示しています。 すべての投稿を表示
ラベル emacs の投稿を表示しています。 すべての投稿を表示

2011年10月20日木曜日

org-mode の HTML エクスポートの文字コード

さっそくはまったエピソードを。

普段、Windows 上での作業なので、文字コードの設定は japanese-shift-jis-dos にしているんだけど、org-mode で書いたものを HTML にエクスポートするので、UTF-8 がいいかなと思い、変更方法を調査。

とりあえず、ファイルの文字コードを UTF-8 にしてエクスポート。(C-x Enter f)
なぜか文字化け。meta タグ等の charset は変わるものの、文字コードは Shift_JIS のまま。
次に、それぽい変数 org-export-html-coding-system を発見したので設定してみた。*scratch* にて
(setq org-export-html-coding-system 'utf-8)
そしてエクスポートするが同じ症状。
なぜだということで、elisp は全く詳しくないがソースを見てみることに。とりあえず
M-x describe-variable org-export-html-coding-system
から開始。すると、org-html.el でそれっぽいところが。
(coding-system (and (boundp 'buffer-file-coding-system)
            buffer-file-coding-system))
(coding-system-for-write (or org-export-html-coding-system
                 coding-system))
(save-buffer-coding-system (or org-export-html-coding-system
               coding-system))
(charset (and coding-system-for-write
          (fboundp 'coding-system-get)
          (coding-system-get coding-system-for-write
                 'mime-charset)))
org-export-html-coding-systemは nil のままだと、バッファの文字コードで決まるようにみえる。
最初のアプローチであってるように見えたが・・・
再起動等やってやり直してみるもやはり同じ症状。
M-x describe-coding-system すると utf-8 になってるように見える。

色々ググッてみると、emacs 23.3 では日本語処理あたりに不具合があるとか。
Magic Comment でいけたというのを見かけたのでつけてみた。
# -*- coding: utf-8 -*-
するとうまくいくものといかないものと。
キャッシュされてるのか日付みたりしてるのかなんなのか、出力されないものがような。何度かやってたら、全て UTF-8 になったので釈然としないがこれでよしということに。

で、家帰ってこれ書くために同じ事やってみたら、最初のアプローチでいける・・・
org-export-html-coding-system の設定でもいける・・・

何か勘違いしてたのか、会社の設定と違うところがあるのか不明・・・
とりあえず、Magic Commentは付けたままの方向に。