解决用cmd编译运行java时的错误

最近上java课程,平时都是用IDEA打代码的,但老师要我们用cmd编译运行,于是在IDEA撸完代码用cmd编译,但却老是编译不出来,有很多乱码。,提示着“错误:GBK的不可映射字符”,又试了几次,着实被搞懵了,明明IDEA种可以运行,为什么用cmd就不行了,经过自己的探索,情况大概就是这样的:

java用的是Unicode这种编码,而又有GBK、UTF-8这些编码格式,而且cmd默认用GBK,恰巧我当时打的java文件是用UTF-8编码的,所以在cmd中运行时会出错。下面是几种解决方案:

1.将java文件用notepad++改下编码格式

注意图中的编码格式UTF-8-BOM ,下文会提到它

解决用cmd编译运行java时的错误_第1张图片

 

可以看见已经能够成功编译成java的字节码

解决用cmd编译运行java时的错误_第2张图片

 

2.修改cmd的默认编码格式

chcp  命令查看当前cmd的默认编码格式

解决用cmd编译运行java时的错误_第3张图片

接着用  chcp 65001 命令,将cmd编码格式临时改为UTF-8(也可永久更改,需要到注册表把936改为65001,不过不建议这么做,更多关于cmd编码详见于https://blog.csdn.net/chy555chy/article/details/78355985),就可以编译运行java文件了

解决用cmd编译运行java时的错误_第4张图片

解决用cmd编译运行java时的错误_第5张图片

 

3.利用javac命令的选项

凭借着作为一个程序员的机(常)智(识),用 javac -help 查看有没有可以利用的选项

解决用cmd编译运行java时的错误_第6张图片

果然-encoding 选项可以用,但接下要说的困扰了我很久,也是曾让我一度怀疑 -encoding 这个选项是否有用,

就是微软的UTF-8和一般的UTF-8不一样,巨硬用的是UTF-8-BOM ,所以如果用 -encoding 这个选项还是错误的话,就要查看java文件是否是巨硬家的UTF-8-BOM 编码格式,因为-encoding 对 UTF-8-BOM也束手无策,只能老老实实区notepad++改下java文件的编码格式。

 

你可能感兴趣的:(解决用cmd编译运行java时的错误)