例如:
System.out.println("╚");
显示为?,System.out.println("\u255a")也是一样。
为什么不起作用?Stdout确实支持这些字符,所以我不明白。
为什么不起作用?Stdout确实支持这些字符,所以我不明白。
如果您使用的是Windows,控制台不是UTF-8而是UTF-16,这是Java使用的本地编码,因此您应该能够直接打印宽字符字符串。
我不是Java程序员,但在C的情况下,您必须调用_setmode()
并使用特殊模式_O_U16TEXT
才能使UTF-16正常工作。
如果您想要打印多字节字符字符串,可以通过命令行使用chcp 65001
或从Win32 API SetConsoleOutputCP()
以编程方式将Windows控制台设置为UTF-8,但请注意一个错误,即WriteFile()
返回写入的字符数而不是文档中所述的写入的字节数。此错误导致Perl、PHP和Ruby上的Windows控制台上的UTF-8损坏。我相信甚至MSVCRT也会受到影响。
祝你好运!