PowerShell中的Python与Python? Windows中的替代shell?

我想要一个在Windows上支持Unicode的shell。 PowerShell,因为它似乎没有。

PowerShell V2(Windows 7 x64):

PS C:\> powershell Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:\> python Python 2.6.2 (r262:71605, Apr 14 2009, 22:46:50) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> unicode_char=unichr(0xf12) >>> unicode_char u'\u0f12' >>> print unicode_char Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\python26\lib\encodings\cp437.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can't encode character u'\u0f12' in position 0: character maps to <undefined> >>> 

PowerShell ISE得到了类似的结果,即使networking上的一些地方声称它是Unicode支持或其他…

Python集成开发环境( IDLE )2.6.2似乎正常工作:

 >>> unicode_char=unichr(0xf12) >>> print unicode_char ༒ >>> 

IDLE非常慢,我宁愿另一个shell,有什么想法? 我可以在PowerShell中做这个工作吗?

Solutions Collecting From Web of "PowerShell中的Python与Python? Windows中的替代shell?"

Windows控制台子系统不是Unicode,而是基于代码页的。 你可以玩设置代码页:

 PS> chcp 65001 PS> ipy64.exe >>> print unichr(0x3a9) Ω 

我无法得到(0xF12)给与正确的字符与该代码页。 也许它在另一个代码页上可用。

ISE可以显示Unicode并接受Unicode输入,例如,

 PS> [char]0xf12 ༒ PS> [char]0xe4 ä PS> [char]0x3a9 Ω 

但是,ISE在IronPython解释器上看起来不太合适。

更进一步说,ISE似乎通过stdout处理来自本地应用程序的Unicode:

 $src = @' namespace Foo { public class Bar { public static void Baz() { System.Console.Out.WriteLine("\u0f12"); System.Console.Out.WriteLine("\u00e4"); System.Console.Out.WriteLine("\u03a9"); } } } '@ Add-Type -TypeDefinition $src [Foo.Bar]::Baz() ༒ ä Ω 

PowerShell本身就是Unicode,但是经典的控制台有Unicode的问题。 但PowerShell ISE绝对是Unicode。

尝试这个:

 PS C:\> $a = [char]0xf12 PS C:\> echo $a 

这是Python不好玩。

在启动Python之前,您可以尝试chcp 65001 (将代码页设置为UTF-8)。 没有承诺虽然(我没有试图看看它的工作,没有安装在这台机器上的Python)。

请注意,在Windows控制台中发出chcp 65001 ,字体必须是Lucida控制台,而不是任何位图字体。 理论上,其他等宽字体ttf应该可以工作,但是他们不(实际上)。 MS检查控制台的等宽字体属性是一个问题,Lucida控制台包含它们。

这里至少有一个Python窗口控制台unicode问题的问题。

正常的Windows控制台和PowerShell ISE都支持Unicode。 有关详细信息,请参阅Michael Kaplan的博客文章:

也许你应该尝试IPython