2011-08-01 35 views
0

我正面临一个奇怪的问题。我在Windows命令提示符下看到,每个'/'字符都被一个垃圾字符(日元符号)替代。我选择了两种字体“MS Gothic”和“Raster”。但同样的问题。如果我使用Raster,则问题是间歇性的。请让我知道如何解决问题。垃圾字符替换Windows命令提示符中的'/'

感谢, 娜迦

+0

我接受了答案。请现在回答我的问题。从现在开始,我会以前做。 – Naga

+1

为什么不坚持使用默认字体? –

回答

5

类型chcp在命令提示符下,我敢打赌,你会看到Active code page: 932

Windows控制台有code pages概念,前期的Unicode天的遗物,其中字节0-255被映射到不同的字符,这取决于语言。虽然字符a-z,a-z,0-9是一致的,但较少使用的字符会映射到目标语言中流行的字符。

code page 932中,反斜杠映射到日元字符。

这是一个常见问题。见Microsoft's note on MSDN

注意 Windows代码页和 日文操作系统使用的OEM代码页字符集包含反斜线的日元符号(¥),而不是 ()。因此,日元符号是 NTFS和FAT文件系统的禁止字符。当将Unicode映射到日文 代码页时,WideCharToMultiByte和其他转换函数将 反斜杠(U + 005C)和普通的Unicode日元符号(U + 00A5)映射到此 相同的字符。出于安全原因,您的应用程序不应使用 通常允许Unicode字符串中的字符U + 00A5转换为可用作FAT文件名的 。有关更多信息,请参阅 安全注意事项:国际功能。

UPDATE

对不起慢了,我花了一点回忆,我原本了解这一点。最好的参考是Mike Kaplan的博客条目here。 michkap是所有unicode的最佳微软博客。如果你处理字符集,编码问题和国际化的黑暗角落,他的博客是一个重要参考。

从他对日元字符输入的反斜杠:

...日语代码932页,0x5c是日元符号,和韩国 码949页,0x5c是韩元的迹象。

这并不是说0x5c不能作为路径分隔符 - 它仍然可以使用。并且也不是说Unicode的代码点为 ,日元和韩元(U + 00a5和U + 20a9)确实充当路径分隔符 --因为它们没有。

...

实际上,经过多年的日本代码页系统和韩国使用其各自的货币符号作为路径分隔符 ,相信客户只是习惯了这种外观。因此, 因此对改变外观(当系统设置为日语或韩语时 )除了那些 符号之外几乎没有兴趣。

为了支持这种期望,日语和韩语的字体,每当 默认的系统区域被设置为分别日语或韩语,将 显示货币符号,而不是反斜杠当U + 005C是示出 。

我相信你会很难找到比那个更好的参考。

+2

Michael Kaplan的博客是一个很棒的资源。尽管我个人从中学到的主要内容是Unicode处理对像我这样的凡人来说太难以正确对待。 :[ –

1

日元和\字符都有字节值0x5C,只是在不同的字符集。这很常见,日本人普遍意识到这一点,并不认为这是一个问题。

请参阅this blog post的评论部分 - 诺曼钻石于2004年12月27日凌晨1:45写道:“Windows路径使用日语默认系统区域设置,因为0x5c是日元符号,日元符号是路径分隔符。”(诺曼在日本工作)