Java中Unicode码u2122字符TM程序中无法在CMD上显示问题

今天我在看Java字符串一节时,看到了"\u2121"是字符TM的Unicode码,本来以为该字符很容易就能输出显示,结果只在
Windows系统命令行中得到一个“?”,我查找了资料,分析了一下原因,觉得挺有意思,就写出来和大家分享一下。

我是在命令行中编译运行时,遇到了这个问题,运行结果“?”,运行结果见图1。程序源代码如下:
public class Test
{
public static void main(String[] args)
{
System.out.println("\u2122");
}

}


图1
分析原因:
1)文件编码格式

我的编辑器默认将.java文件保存为ANSI格式编码,见图2。


图2

我将文件编码格式由默认保存的ANSI格式编码转为UTF-8格式编码,重新编译出错,编译器识别错误,见图3


图3

我将文件编码格式转为UTF-8无BOM格式编码,编译成功,程序能运行,结果在CMD中仍是显示“?”,见图4。


图4
2)Windows系统CMD无法识别Unicode

在CMD框上右键点击“属性”,点击“选项”,我们可以在下面找到结果,见图5。


图5
windows自带的命令行CMD支持ANSI,不支持UTF-8,因此CMD无法识别Unicode码\u2122,就显示了一个“?”。

以上是我对该问题的分析和解答,仅供参考,欢迎评论。

猜你喜欢

转载自blog.csdn.net/m0_37732829/article/details/80569508
今日推荐