javac -encoding 用法详解
这里有新鲜出炉的 Java 函数式编程, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
当我们编辑了一个 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 下都能正常跑...
来源: http://www.phperz.com/article/18/0218/359159.html