何が何でも Mercurial fixutf8 のログを Windows コンソールで見る
はまった。
まず普通の状態(cp932)で hg log -v を叩くとこんな感じになる。
> hg log -v . . . ** unknown exception encountered, details follow ** report bug details to http://mercurial.selenic.com/bts/ ** or mercurial@selenic.com ** Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] ** Mercurial Distributed SCM (version 1.6) ** Extensions loaded: convert, graphlog, extdiff, hgk, bookmarks, rebase, purge, mq, transplant, fixutf8 Traceback (most recent call last): File "hg", line 36, in <module> File "mercurial\dispatch.pyo", line 16, in run File "mercurial\dispatch.pyo", line 34, in dispatch File "mercurial\dispatch.pyo", line 54, in _runcatch File "mercurial\dispatch.pyo", line 483, in _dispatch File "mercurial\dispatch.pyo", line 351, in runcommand File "mercurial\dispatch.pyo", line 534, in _runcommand File "mercurial\dispatch.pyo", line 488, in checkargs File "mercurial\dispatch.pyo", line 481, in <lambda> File "mercurial\util.pyo", line 420, in check File "mercurial\extensions.pyo", line 116, in wrap File "mercurial\util.pyo", line 420, in check File "hgext\mq.pyo", line 2791, in mqcommand File "mercurial\util.pyo", line 420, in check File "mercurial\extensions.pyo", line 116, in wrap File "mercurial\util.pyo", line 420, in check File "hgext\graphlog.pyo", line 368, in graph File "mercurial\util.pyo", line 420, in check File "mercurial\commands.pyo", line 2529, in log File "mercurial\cmdutil.pyo", line 702, in flush File "mercurial\extensions.pyo", line 160, in wrap File "C:/DOKODOKO/hg-fixutf8/fixutf8.py", line 140, in f win32helper.rawprint(h, ''.join(args)) File "C:/DOKODOKO/hg-fixutf8\win32helper.py", line 84, in rawprint u = s.decode('utf-8') File "encodings\utf_8.pyo", line 16, in decode UnicodeDecodeError: 'utf8' codec can't decode byte 0x82 in position 139: unexpec ted code byte
どうもログはutf-8だがファイル名がSJISだからのようだ。
で、Windowsコンソールをutf-8にする。
が、これがまた大変。
ぐぐってレジストリをいじったが、結局Vistaでは以下の方法で行くみたいだ。
まずフォントをMSゴジッグにしておく。
で、chcp 65001 をたたく。
で、環境変数 HGENCODING を utf-8にしておくか、hg log --encoding utf-8 -v とオプションに指定する。
出た。
dir で日本語も出る。