0

hg showconfig次に取得を使用して、Mercurial リポジトリへのルート パスを取得したいと考えていますbundle.mainreporoot。ルート パスに非 ASCII 文字が含まれていD:\maçã\asdます。

の出力hg showconfigは次のとおりです。

...
bundle.mainreporoot=D:\maþÒ\asd
...

これを、エンコード cp850 を持つ Windows 7 Powershell で実行しています。Mercurial に、適切なエンコーディング cp850 で showconfig を出力するように指示したいと考えています。たとえばhg showconfig --encoding cp850、成功しませんでした。

文字þは cp850\xE7にあり、Unicode コード ポイント U+00E7 のように見えç(必要な正しい文字)、çcp1252 にもあります。

4

1 に答える 1

3

コマンドを実行する前にコード ページを変更すると役立ちます。米国 Windows は、コンソールに cp437 を使用し、非 Unicode GUI プログラムに Windows-1252 を使用します。何らかの理由で、Mercurial は cp1252 を使用しています。US Windows を使用していない場合は、別のコード ページが必要になる場合があります。

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS W:\maçã\asd> hg showconfig bundle.mainreporoot
W:\maτπ\asd
PS W:\maçã\asd> chcp 1252
Active code page: 1252
PS W:\maçã\asd> hg showconfig bundle.mainreporoot
W:\maçã\asd

編集

Python3 によると、表示されている 3 つの異なる文字列は、Mercurial によって返され、コンソールで cp850 または cp437 としてデコードされた cp1252 です。

>>> 'maçã'.encode('cp1252').decode('cp850')
'maþÒ'
>>> 'maçã'.encode('cp1252').decode('cp437')
'maτπ'

あなたのペーストビン コードは、cp1252 としてデコードされた cp850 です。

>>> 'maçã'.encode('cp850').decode('cp1252')
'ma‡Æ'
于 2012-04-16T01:51:27.370 に答える