javac -encoding 用法详解

 更新时间:2016年12月16日 09:54:26   作者:feiyu84  
当我们编辑了一个Java源文件保存时,是以操作系统默认的字符编码保存的(Windows xp默认字符集是GBK)。这篇文章主要介绍了javac -encoding 用法详解,非常具有实用价值。

昨天有个刚学java的师弟发了个程序给我,说死活编译不过,老是报编码问题,自己试了一下,也出问题了...

当我们编辑了一个Java源文件保存时,是以操作系统默认的字符编码保存的(Windows xp默认字符集是GBK)。当调用javac命令时,会把源文件进行一次编码转换,如果没有指定字符集,就从操作系统默认的字符集转换成Java内部默认的unicode字符集,然后再将源文件编译成class文件,并且以unicode的编码形式保存到硬盘上。

仔细查看了一下错误,才发现是文件编码的问题,他的文件用的是UTF-8编码的,于是加了-encoding编译成功~~

public class Test {
  public static void main(String[] args) {
    System.out.println("你好!");
  }
}
D:/>javac Test.java
Test.java:3: 警告:编码 GBK 的不可映射字符
    System.out.println("浣犲ソ锛?);
                ^
Test.java:3: 未结束的字符串字面值
    System.out.println("浣犲ソ锛?);
              ^
Test.java:3: 需要 ';'
    System.out.println("浣犲ソ锛?);
                  ^
Test.java:5: 进行语法解析时已到达文件结尾
}
D:/>javac -encoding utf-8 Test.java

jdk在编译的时候,如果没有用-encoding参数指定java源程序的编码格式,则javac首先获得操作系统默认采用的编码格式,也即在编译java程序时,若不指定源程序文件的编码格式,jdk首先获得操作系统默认的编码格式,xp是GBK,然后jdk就把java源程序从该编码格式转化为java内部默认的unicode格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是unicode编码的,它暂放在内存中,紧接着,jdk将此以unicode编码的编译后的class文件保存到操作系统中形成.class文件。最终获得的.class文件是内容以unicode编码格式保存的类文件,它内部包含源程序中的中文字符串,只不过此时它己经由安装系统编码格式转化为unicode格式了。

一般我比较喜欢用UTF-8的,在windows和linux下都能正常跑...

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot开启的2种方式详解

    Spring Boot开启的2种方式详解

    这篇文章主要介绍了Spring Boot开启的2种方式详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Java SpringMVC实现PC端网页微信扫码支付(完整版)

    Java SpringMVC实现PC端网页微信扫码支付(完整版)

    这篇文章主要介绍了Java SpringMVC实现PC端网页微信扫码支付(完整版)的相关资料,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • 关于Java 获取时间戳的方法

    关于Java 获取时间戳的方法

    这篇文章主要介绍了关于Java获取时间戳的方法,Java有两个取时间戳的方法,分别是System.currentTimeMillis()和System.nanoTime()下文对两种方法进行详细介绍,需要的小伙伴可以参考一下
    2022-04-04
  • mybatis空值插入处理的解决方法

    mybatis空值插入处理的解决方法

    本文主要介绍了mybatis空值插入处理的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Java数组的基本操作方法整理

    Java数组的基本操作方法整理

    这篇文章主要给大家介绍了关于Java中数组的定义和使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • Java编程Commons lang组件简介

    Java编程Commons lang组件简介

    这篇文章主要介绍了Java编程Commons lang组件的相关内容,十分具有参考意义,需要的朋友可以了解下。
    2017-09-09
  • Java异常学习之自定义异常详解

    Java异常学习之自定义异常详解

    你的程序总有一天会崩溃掉,在崩溃掉的时候我们要知道它在哪,为了什么而崩溃掉,数据的保存或者丢失情况如何等问题。下面这篇文章主要给大家介绍了关于Java异常学习之自定义异常的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-06-06
  • Java CompletableFuture实现多线程异步编排

    Java CompletableFuture实现多线程异步编排

    这篇文章主要为大家介绍了Java CompletableFuture实现多线程异步编排,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • SpringSecurity动态加载用户角色权限实现登录及鉴权功能

    SpringSecurity动态加载用户角色权限实现登录及鉴权功能

    这篇文章主要介绍了SpringSecurity动态加载用户角色权限实现登录及鉴权功能,很多朋友感觉这个功能很难,今天小编通过实例代码给大家讲解,需要的朋友可以参考下
    2019-11-11
  • Spring Web MVC基础理论概念

    Spring Web MVC基础理论概念

    Spring Web MVC是基于Servlet API构建的原始Web框架,从⼀开始就包在Spring框架中,Spring Web MVC是一个Web框,本文给大家介绍Spring Web MVC基础理论,感兴趣的朋友一起看看吧
    2024-08-08

最新评论