关于Java 错误: 编码 GBK 的不可映射字符 (0x95)

关于Java 错误: 编码 GBK 的不可映射字符 (0x95)

今天第一次学习java,敲了一段Hello World代码,如下:

public class Hello{
    public static void main(String args[]){
        System.out.println("Hello World!");
    }
}

在vscode中运行一切正常哈,但是当我在cmd中尝试运行时,却产生了报错,如图所示:在这里插入图片描述
为什么这样子咧?根据经验,乱码一般是由于编码和解码时采用了不同的标准造成的。
那么这里想搞清楚问题原因,就要引出Java的工作原理了,Java是一个半编译半解释的语言,以文件Hello.java 为例 :在这里插入图片描述
与之原理向对应的Java环境也就是JDK,在其安装目录的bin目录下有两个可执行文件 javac.exe 和 java.exe。他们的作用分别为:
- javac.exe 先将源代码编译成 *.class 文件
- java.exe 执行 编译完的 *.class 文件

我的VScode默认是utf-8的编码,也就是说我的Hello.java使用的utf-8,我看到网上解决方案发现可以使用以下语句解决:“javac -encoding UTF-8 文件名.java”
尝试以后发现虽然解决了乱码问题,但也产生了新的错误,如图:在这里插入图片描述
看来文件编码还是有问题,使用nodepad++打开,找到【编码】 查看文件格式,发现是utf-8+BOM,选择 【转为utf-8格式】,这下问题应该就解决了,再次尝试在这里插入图片描述
咦?为什么没有按照预料的输出那句“Hello World”呢?我对着电脑屏幕陷入了沉思(其实是懵逼了…)当我的目光放到了目标文件夹的时候,我才恍然大悟:
在这里插入图片描述
这里新生成了一个Hello.class文件,说明这里只是用 javac.exe对文件进行了编译,而Java生成*.exe文件需要两步 编译+解释,也就是说我还需要调用java.exe 来把.class 变成 .exe 文件,我赶忙在窗口再输入一句:“java Hello”(这里解释字节码文件是不需要后缀的)
运行成功
芜湖~ 想不到这么一个简单的问题居然花了我将近半个小时去解决,看来在学习的道路上还差得远啊~

以后要多记录一下踩到的坑,慢慢积累,争取早日摆脱菜鸟称号~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值