Mercurial 日本語ファイル名 文字化け 解決!!
カテゴリー: ぷろぐらみんぐ/メモ
2015-11-17
Mercurial 日本語ファイル名 文字化け
TortoiseHg
tortoisehg.bitbucket.org/ja/
2015年は この問題はどうなんだろう
使っていないからわからない。
ので試してみる
媒体 TortoiseHg :2015/11/04 3.6 released
(1) \temp\1を作成後
ここにリポジトリ作成
(2) 右クリックで
新しいテキスト ドキュメント.txt
を作って HG commit
うまくいきました
(3) 右クリックで
(3-1) 新しいテキスト ドキュメントを作り
1表2.txt という名前にします。
(3-2) フォルダにフォーカスあわせて、
HG commit で追加
「変更はありません。」あれ?
(3-3) 1表2.txt にフォーカスして
HG commit 今度はメッセージでました
ファイルや差分を表示しません
: [Error 2] 指定されたファイルが見つかりません。
: 'C:\\temp\\1\\1\x95/2.txt'
直っていないようです
コメント、フォルダ、ファイル名取得、アクセスする際に、utf8とシフトジス変換すればいいだけのことなんですよ
すっごく簡単ですよ。
なんでできないの?。
きっと、WindowsでUTF8にすると過去の資産が文字化けして嫌だからとかいうのが理由じゃない?
こういうのって伸びないよ。人が去るだけ。
あの使いにくいgitでも対応してるのに。だから使う人が増えている。
Windowsで日本を含むマルチバイトセット圏の人は
このツールは 使い物になりませんね。
【Webで検索】
2012年の情報がヒットしました。
Mercurial 日本語ファイル 文字化け
20年以上くらい前のプログラムのように
バカの一つ覚えで、asciiコードとして処理するので
マルチバイト文字の環境(Windows)では、エラーになります。
またutf8としても扱っていません。
内容
UTF8として保存:これがどの環境でも文字化けしない正しい動作でしょう。
[extensions]
#fixutf8 = C:\path\to\fixutf8.py
#※現在対応していないらしい
* extensions
https://www.mercurial-scm.org/wiki/UsingExtensions
環境変数の設定
setenv HGENCODING cp932
コントロールパネル システムとセキュリティ システム
→ システムの詳細設定
→ 詳細設定 環境変数
→ システムの環境変数(S)
→ 新規
変数名 HGENCODING
変数値 CP932
を登録。
まとめ Windows TortoiseHg
環境変数
mercurial.ini
※utf8のfixutf8.pyは、ver2以降対応していないらしい。
※シフトジス運用するとutf8な環境とやりとりできません。
テスト:2015/11
まとめ Windows cygwin
cygwinはUTF8に対応しているらしい。
環境変数 HGENCODING を設定するだけです
~/.bashrc
export HGENCODING=utf-8
環境変数に登録
echo export HGENCODING=utf-8 >> ~/.bashrc
TortoiseHg は 直す気がないようですね
UTF8に何年も対応していないことから
Windows環境ではmercurialは使わないほうが賢明ですね
mercurialのソースコードがpythonっていう時点で終わってますね。
TortoiseHg
tortoisehg.bitbucket.org/ja/
2015年は この問題はどうなんだろう
使っていないからわからない。
ので試してみる
媒体 TortoiseHg :2015/11/04 3.6 released
(1) \temp\1を作成後
ここにリポジトリ作成
(2) 右クリックで
新しいテキスト ドキュメント.txt
を作って HG commit
うまくいきました
(3) 右クリックで
(3-1) 新しいテキスト ドキュメントを作り
1表2.txt という名前にします。
(3-2) フォルダにフォーカスあわせて、
HG commit で追加
「変更はありません。」あれ?
(3-3) 1表2.txt にフォーカスして
HG commit 今度はメッセージでました
ファイルや差分を表示しません
: [Error 2] 指定されたファイルが見つかりません。
: 'C:\\temp\\1\\1\x95/2.txt'
直っていないようです
コメント、フォルダ、ファイル名取得、アクセスする際に、utf8とシフトジス変換すればいいだけのことなんですよ
すっごく簡単ですよ。
なんでできないの?。
きっと、WindowsでUTF8にすると過去の資産が文字化けして嫌だからとかいうのが理由じゃない?
こういうのって伸びないよ。人が去るだけ。
あの使いにくいgitでも対応してるのに。だから使う人が増えている。
Windowsで日本を含むマルチバイトセット圏の人は
このツールは 使い物になりませんね。
【Webで検索】
2012年の情報がヒットしました。
Mercurial 日本語ファイル 文字化け
20年以上くらい前のプログラムのように
バカの一つ覚えで、asciiコードとして処理するので
マルチバイト文字の環境(Windows)では、エラーになります。
またutf8としても扱っていません。
内容
win32mbcs.py | TortoiseHgに同梱されていない。この時点でマルチバイト言語圏は無視されていることがわかる。 https://www.mercurial-scm.org/release/ ソースをダウンロードして mercurial-3.6.tar.gzからwin32mbcs.pyを取り出し dist\mercurial-3.6\hgext\win32mbcs.py C:\Program Files\TortoiseHg\lib に貼り付け。 |
mercurial.ini | 場所 %HOMEDRIVE%%HOMEPATH%\mercurial.ini c:\users\ユーザー名\mercurial.ini |
[extensions] hgext.win32mbcs=C:/Program Files/TortoiseHg/lib/win32mbcs.py [win32mbcs] encoding = CP932 |
|
環境変数 システム |
名前 HGENCODING 値 cp932 ここを utf-8 とするとTortoiseHgでファイル名が壊れます |
弊害 | shift jis コードとして ファイル名を保存するので utf8で操作する環境との間では互換性がありません |
UTF8として保存:これがどの環境でも文字化けしない正しい動作でしょう。
[extensions]
#fixutf8 = C:\path\to\fixutf8.py
#※現在対応していないらしい
* extensions
https://www.mercurial-scm.org/wiki/UsingExtensions
環境変数の設定
setenv HGENCODING cp932
コントロールパネル システムとセキュリティ システム
→ システムの詳細設定
→ 詳細設定 環境変数
→ システムの環境変数(S)
→ 新規
変数名 HGENCODING
変数値 CP932
を登録。
まとめ Windows TortoiseHg
環境変数
コートページ | 環境変数 | |
変数名 | 変数値 | |
シフトジス | HGENCODING | CP932 |
UTF8 | HGENCODING | UTF-8 |
mercurial.ini
コートページ | mercurial.ini |
場所 %HOMEDRIVE%%HOMEPATH%\mercurial.ini |
|
シフトジス | [extensions] hgext.win32mbcs=path\to\win32mbcs.py [win32mbcs] encoding=CP932 |
UTF8 | fixutf=path\to\fixutf8.py |
※utf8のfixutf8.pyは、ver2以降対応していないらしい。
※シフトジス運用するとutf8な環境とやりとりできません。
テスト:2015/11
まとめ Windows cygwin
cygwinはUTF8に対応しているらしい。
環境変数 HGENCODING を設定するだけです
~/.bashrc
export HGENCODING=utf-8
環境変数に登録
echo export HGENCODING=utf-8 >> ~/.bashrc
TortoiseHg は 直す気がないようですね
UTF8に何年も対応していないことから
Windows環境ではmercurialは使わないほうが賢明ですね
mercurialのソースコードがpythonっていう時点で終わってますね。