藤原です。
書いている間に、西原さんから回答が投函されてしまいましたが、折角な
ので投函しておきます(笑)
2016年10月27日 21:38 Hiroyuki Hayashibara <
aq...@aqrs.jp>:
> 前々から気にはなっていたのですが、
> Windowsでエクセルファイルを開いたままhgで更新をかけてしまったときなどの、
>
> プロセスはファイルにアクセスできません。別のプロセスが使用中です。
>
> というエラーが、HGENCODING=utf-8の時に正しく表示されていないようです。
>
> ちょっと気になったので確認してみました。
> Windows 10のTortoiseHG 3.9.2で確認しています。
>
> コマンドラインで、HGENCODINGを設定していない状態では
>
> hg update 20887
> 中止: プロセスはファイルにアクセスできません。別のプロセスが使用中です。
>
> という表示になりますが、
> set HGENCODING=utf-8
> をした後で実行すると、
>
> hg update 20887
> 荳ュ豁「: プロセスはファイルにアクセスできません。別のプロセスが使用中です。
>
> となり、"中止"の部分だけがutf-8になり、後半のエラーはSJISのままになります。
>
> 結果的に、TortoiseHG上で文字化けし、謎のエラーになってしまいます。
件のメッセージは、以下のように、提供元/符号化方式の異なるバイト列
が結合されることで、文字化けしています。
文字列 提供元 符号化 設定元
=============== ===================== ====== ======================
"中止" hg コマンド utf-8 HGENCODING=utf-8
"プロセスは~" Windows C ランタイム cp932 OSの「地域と言語」設定
=============== ===================== ====== ======================
> これは対策は難しいものなのでしょうか?
> もし、設定等で回避出来るのであれば、どなたか回避策を教えてもらえ
> ると助かります。
以下、実装を弄らないで済ませる方向限定の話です。
Windows の符号化/国際化周りの話では、概ね以下の2つの手段が話題に
上りますが、本件のようなケースに関しては、役に立ちそうにはありませ
ん。
- システムコードページ設定で対応
言語と符号化方式の紐付けが固定 (例: 「英語(米国)」は cp437)
なので、utf-8 (cp65001) の指定はできない
- コマンドプロンプトでの chcp で対応
chcp は、あくまで「コマンドプロンプトでの表示に関する符号化方
式設定」に過ぎないので、Windows C ランタイムが生成するメッセー
ジには影響を与えない
> 仕事ではgitも使っていますが、個人的にはやはりhgが好きです。
> ただ、やはり日本語まわりが少々怪しいのが、人にすすめにくい理由になってしまうのが少し残念です。
>
日本語ファイル名周りの対応は、ついつい作業が後回しになってしまって
いて申し訳ない限りです…… orz
https://www.mercurial-scm.org/wiki/WindowsUTF8Plan
> --
> from Mercurial 日本語コミュニティ <
mercur...@googlegroups.com>
> ※ ヘルプ表示は
http://groups.google.com/group/mercurial-ja?hl=ja
> ---
> このメールは Google グループのグループ「mercurial-ja」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
mercurial-ja...@googlegroups.com
> にメールを送信してください。
> その他のオプションについては
https://groups.google.com/d/optout にアクセスしてください。
--
----------------------------------------------------------------------
FUJIWARA Katsunori(
flying...@gmail.com)