最近上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 ,下文会提到它

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

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

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

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

3.利用javac命令的选项

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

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

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

解决用cmd编译运行java时的错误的更多相关文章

  1. cmd编译运行Java文件详解

    ①准备工作 首先用记事本编写HelloWorld.java放至G:\Javaspace路径 public class HelloWorld{ public static void main(Strin ...

  2. JAVA_HOME path classpath 以及cmd编译运行java代码

    JAVA_HOME PATH CLASSPATH 三者的区别:安装完jdk之后,首先在环境变量里面添加JAVA_HOME ,例如安装路径为C:\Program Files\Java\jdk1.6.0_ ...

  3. cmd编译运行java

    新建.java结尾的文件 内容 public class hello{ public static void main(String[] args){ System.out.println(" ...

  4. Windows用cmd编译运行Java程序

    https://www.runoob.com/w3cnote/windows10-java-setup.html

  5. 在控制台编译运行java程序详细指导

    控制台编译运行.java文件 首先在cmd中输入java –version确定java环境变量是否已经配好 其次在cmd中输入javac –version 确定javac环境变量是否已经配好 在用cd ...

  6. 使用NppExec插件让Notepad++编译运行Java、Python

    一直希望有一个轻量级的编辑器,既可以编辑代码,也可以一键运行.后来有了NotePad++,希望可以配置配置达到目的,配Java的时候上网搜了一堆,基本上互相抄,不解决实际问题,很郁闷.后来琢磨了出来, ...

  7. Sublime Text Build System——编译运行Java

    今天Google如何在ST中编译运行Java的时候,无意中发现了一个更好的方法. 其实,在ST中是可以编译Java的,但是运行不了,因为没有配置运行命令.那么一般的配置方法都是如下的: http:// ...

  8. vim编译运行java程序

    想让你的vim可以编译运行java只要在你的配置文件里面加一句: map <F5> :!javac %&&java %:r <CR> 就可以编译运行java了

  9. 编译cuda Examples 时出现错误:/bin/ld cannot find -lglut

    编译cuda Examples 时出现错误:/bin/ld cannot find -lglut ,可以先找找是否缺少库,有时候可能是symbolic link不正确,没有链接到正确位置,导致找不到库 ...

随机推荐

  1. Windows 创建Raid

    Windows 常见raid有0.1和5,以下操作在虚拟机下模拟,学会这招在自己电脑做个raid也未尝不可啊~ 一.RAID 0 创建: 添加两块硬盘,联机并初始化(2T以下选MBR,以上选GPT) ...

  2. WiredTiger 4.1.0 发布,MongoDB 存储引擎

    WiredTiger 4.1.0 发布了.WiredTiger 是一个开源的.高性能.可伸缩的 MongoDB 数据存储引擎. 下面是一些性能比较图表: 该版本暂未提供更新内容. 下载地址: Sour ...

  3. Greenplum 如何直连segment节点

    Greenplum   展开阅读全文 直连greenplum segment节点的方法, utility模式 : 使用这种方式,不与其他节点通讯,只操作当前节点.也没有数据分布的概念. 如果使用uti ...

  4. 1101: [POI2007]Zap(莫比乌斯反演)

    1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MB Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给定 ...

  5. 数据结构实验之查找三:树的种类统计(SDUT 3375)

    C: #include <stdio.h> #include <stdlib.h> #include <string.h> struct node { char d ...

  6. ROS与树莓派的结合

    从零开始学树莓派和ROS 今天写下自己的第一篇博客,记录一下自己的学习历程和学习过程中碰到的各种小问题,供同道者参阅和自己以后回顾用 ,水平不高,我就放开手写吧,反正也不会有人看. 我现在在做毕业设计 ...

  7. 【实战】Vue全家桶(vue + axios + vue-router + vuex)搭建移动端H5项目

    使用Vue全家桶开发移动端页面. 本博文默认已安装node.js. github链接 一.准备工作 安装vue npm install vue 安装脚手架vue-cli npm install -g ...

  8. sonca排除不扫描文件

    在pom.xml文件中的<properties>标签下加上<sonar.exclusions>XXX</sonar.exclusions>标签,如下 <pro ...

  9. Tcl循环语句

    for 开始 判断语句 变量自增(自检) 循环体 示例代码: for {set i 0} {$i<10} {incr i} { puts "I is: $i " } 运行结果 ...

  10. 【原】Python基础-循环语句

    x = 1while x <= 10: print(x) x += 1 password = ""while password != "3213554": ...