2009-08-07 62 views
3

这是一个相当低级别(低于“更接近金属”)的问题。Linux与Windows:控制台如何呈现unicode字符?

我想知道如果你们中的任何一位能够在Windows中接收到一个Unicode字符(或任何字符代码,但我特别感兴趣Unicode编码标准)的控制台时如何指向我的文档,解释等, ,好的'cmd.exe'(使用代码页65001)和Linux中的xterm开头,例如,LC_CTYPE=en_US.UTF-8查找相应的字形(和位置)。

我知道在Windows中可能很难知道,但我无法找到很多信息。

谢谢。

回答

3

据我所知,cmd.exe绑定到您定义为“非Unicode程序的代码页”或任何被调用的任何256个字符的代码页。

详细说明,如果我将上述设置设置为日语,cmd.exe会突然用日元符号替代反斜杠(就像系统中的其他每个非Unicode应用程序一样)并正确解释ShiftJIS代码。将它设置为荷兰文给了我一个带有重音的I(我忘记了它),而另一个代码页会给出一个半填充的垂直实体,而不是相同的字符。

不是Unicode。 Unicode会让我在同一时间做所有三个。

+0

它不一定是256个字符:shift-JIS实际上是一个MBCS。是的,它在Windows中确实存在日元/反斜杠混淆,这是非常可悲的,可能来自DOS ... – SamB 2011-06-07 02:36:05

+1

为了澄清,*所有* Windows *中的日语字体*总是这样做。如果应用程序*是* Unicode,则无关紧要!不要相信我?在“charmap”的MS Mincho中查找U + 005C,或者查看http://blogs.msdn.com/b/michkap/archive/2007/03/28/1972239.aspx – SamB 2011-06-07 03:04:10

1

控制台使用带有从代码页创建的编码的TextWriter。这意味着使用编码页的特定编码对象将写入的字符编码为字节。

+0

他非常具体地讨论了cmd.exe,这不是,最后我检查了.Net应用程序,因此它逻辑上不使用TextWriter。除非另有TextWriter,我不知道。 – Kawa 2009-08-07 22:59:42

+0

是的,我刚刚检查过。它在Process Explorer中并不完全显示为黄色。 – Kawa 2009-08-07 23:08:12

+0

好吧,如果我们把它缩小到控制台本身,它根本不支持unicode字符。如果当前编码不是UTF-8,并且您尝试显示UTF-8文件,则它将使用当前编码对其进行解码,而这当然会造成ASCII字符范围之外的任何混乱。如果当前编码是UTF-8,则它仍不支持Unicode字符,只支持编码为UTF-8的字符。 – Guffa 2009-08-08 07:50:54

1

控制台不支持Unicode。 :)

+0

是的,这就是我之前所说的。 – Kawa 2009-08-08 12:54:29

+0

这在最近的Linux系统上并非如此。 – 2009-08-08 13:00:53

+0

最近的定义至少可以追溯到1996年的控制台。如果您的意思是终端仿真器,那么1999年对XTerm添加了对UTF-8的支持,并且之前已经出现在其他一些终端仿真器中。 – AProgrammer 2009-08-09 14:36:23