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

PowerShell中的Unicode与Python?Windows中的替代shell?,python,windows,unicode,powershell,Python,Windows,Unicode,Powershell,我想要一个在Windows上支持Unicode的shell。PowerShell的飞船似乎没有 PowerShell V2(Windows7 x64): IDLE很慢,我更喜欢另一个shell,有什么想法吗?我可以在PowerShell中执行此操作吗?也许您应该尝试Windows控制台子系统不是Unicode,而是基于代码页的。您可以随意设置代码页: PS> chcp 65001 PS> ipy64.exe >>> print unichr(0x3a9) Ω 我无

我想要一个在Windows上支持Unicode的shell。PowerShell的飞船似乎没有

PowerShell V2(Windows7 x64):


IDLE很慢,我更喜欢另一个shell,有什么想法吗?我可以在PowerShell中执行此操作吗?

也许您应该尝试

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似乎通过标准输出处理来自本机应用程序的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 console,而不是任何位图字体。从理论上讲,其他单间距ttf字体应该可以工作,但实际上不行。这是一个属性问题,MS检查控制台的单间距字体,Lucida控制台包括这些属性


Python Windows控制台unicode问题至少存在一个问题。

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


是的,普通python 2.6.2无法在ISE中打印这些字符,我遇到与常规powershell相同的错误。不幸的是,您正在运行WNU Windows:WNU的非UnixWindows控制台不基于代码页,它们与Windows的所有组件一样基于Unicode。代码页仅适用于遗留应用程序。我认为ConsoleAs也应该工作(它的TrueType)。这是我在控制台窗口中使用的字体。哦,是的,你可能是对的,但由于我的MS windows体验从未达到Vista或7,我不知道。很好的发现。谢谢分享!相关的:
$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()
༒
ä
Ω
PS C:\> $a = [char]0xf12
PS C:\> echo $a