【问题标题】:Issues with windows command line using utf-8 code page使用 utf-8 代码页的 windows 命令行问题
【发布时间】:2015-10-23 17:32:04
【问题描述】:

在我的应用程序中,我正在读取包含中文字符的属性文件(UTF-8 编码)并在 Windows 命令行上打印它们。但是,由于某种原因,消息没有正确显示(一些额外的字符来了)。但是,在 Eclipse 控制台和 Cygwin 上会正确显示相同的消息。我已将命令行代码页设置为 utf-8(65001),并使用了“Lucida”字体。

如果您看到上图,在 Windows 上,它在第二行打印了一个额外的 0,但这是意料之外的;在 cygwin 上,消息打印正确。

如果我遗漏了什么,请告诉我。从这个 post 中,我可以看到 Windows UTF-8 代码页实现存在一些问题。如果是这样,有没有其他方法可以解决这个问题?

【问题讨论】:

    标签: java windows command-line utf-8 command-line-interface


    【解决方案1】:

    我可以看到 Windows UTF-8 代码页实现存在一些问题

    哦,肯定是的

    还有其他方法可以解决这个问题吗?

    典型的解决方案是接受 Windows 命令提示符是一场破坏性的灾难并继续前进。但是如果你真的需要,你可以use JNA直接调用Win32函数WriteConsole,避免损坏字节编码层,当你可以确定你正在输出到控制台(而不是例如管道)时。

    【讨论】:

    • 感谢您的回答。我已经使用 JDK 提供的 native2ascii 工具转换了我的属性文件,并且正确打印了消息。看来Windows转换和打印转义的unicode字符没有任何问题(native2ascii工具将汉字转换为转义的unicode字符)。
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 2019-02-02
    • 2012-10-02
    • 1970-01-01
    • 2012-01-26
    • 2010-12-01
    • 1970-01-01
    相关资源
    最近更新 更多