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)文件编码格式
以上是我对该问题的分析和解答,仅供参考,欢迎评论。
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,就显示了一个“?”。以上是我对该问题的分析和解答,仅供参考,欢迎评论。