垃圾字符替换Windows命令提示符中的“/”

时间:2011-08-01 10:44:47

标签: windows command-line fonts raster

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

谢谢, 纳加

2 个答案:

答案 0 :(得分: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 Yen符号(U + 00A5)   相同的性格。出于安全原因,您的应用程序不应该   通常允许字符U + 00A5在可能的Unicode字符串中   转换为用作FAT文件名。有关更多信息,请参阅   安全考虑因素:国际特征。

<强>更新

抱歉延迟了,我花了一点时间回忆起我最初读到的内容。最好的参考是Mike Kaplan的博客条目here。 michkap是所有unicode最好的Microsoft博客。如果你处理字符集,编码问题和国际化的黑暗角落,他的博客是必不可少的参考。

从日元字符的入口作为反斜杠:

  

...在日语代码页932上,0x5c是YEN SIGN,在韩语上   代码页949,0x5c是WON SIGN。

     

这并不是说0x5c不充当路径分隔符 - 它   仍然。而且这也不是说Unicode代码点   对于日元和元(U + 00a5和U + 20a9)确实充当路径分隔符    - 因为他们没有。

     

...

     

在实践中,经过多年日本和日本的基于代码页的系统   韩国使用各自的货币符号作为路径分隔符,   据信客户只是习惯于这种外观。和   因此,没有兴趣改变这种外观(何时   系统设置是日语或韩语)除了那些   符号。

     

为了支持这种期望,日语和韩语字体,无论何时   默认系统区域设置分别设置为日语或韩语   当U + 005c为时,显示货币符号而不是反斜杠   所示。

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

答案 1 :(得分:1)

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

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