javac,java 编码的测试

    1. 在Eclipse中新建3个class:A,B,C ,右键Properties中的Text file encoding,分别设定这三个A,B,C的文件编码为:iso8859-1,gbk,utf-8.

     再通过同样的样式在bin目录下查看A.class,B.class,C.class文件编码可以发现都是utf-8的形式。

    

     2.在A中编写如下代码:包含中文字符。

    public static void main(String[] args) {
        String str = "中";
        System.out.println(str);
    }

    通过命令行的形式,执行javac A.java可以看到编译出错。javac -encoding utf-8 A.java可以正常编译通过。

    在这里指定的encoding utf-8实际上上告诉jvm以指定utf-8编码来读取A.java(也是utf-8编码的)文件,这样才能正确读取到内存中,转换成unicode编码的二进制字符序列,最后成功生成以utf-8编码保存的class文件。

    3.整个Eclipse的workspace编码设置成utf-8或者在eclipse.ini中配置-Dfile.encoding=utf-8,那么程序中

       System.getProperty("file.encoding")就为utf-8.

       在程序中虽然可以通过System.setProperty("file.encoding","utf-8")改变file.encoding的值,但jvm启动参数

      file.encoding启动后不能被修改的。

 

                public static void main(String[] args) throws Exception {
		workspaceGBK();
		//workspaceDfileEncodingUTF8();//run configurations中配置-Dfile.encoding=utf-8

	}

	static void  workspaceGBK() throws Exception {
		System.out.println(System.getProperty("file.encoding"));//GBK
		FileWriter out = new FileWriter("gbk_1.txt");//4bytes
		out.write("你好");
		out.close();
		OutputStreamWriter utf8 = new OutputStreamWriter(new FileOutputStream(
				"utf8_1.txt"), "utf-8");//6bytes
		utf8.write("你好");
		utf8.close();
	} 

	static void workspaceDfileEncodingUTF8() throws Exception {
		System.out.println(System.getProperty("file.encoding"));//utf-8
		FileWriter out = new FileWriter("gbk_2.txt");//6bytes
		out.write("你好");
		out.close();

		OutputStreamWriter utf8 = new OutputStreamWriter(new FileOutputStream(
				"utf8_2.txt"), "utf-8");//6bytes
		utf8.write("你好");
		utf8.close();
	}

    gbk_1.txt,gbk_1.txt,utf-8-1.txt,utf-8-2.txt中的中文都显示正常。前一个代码中使用的file.encoding是继承自工作空间的默认值gbk,后者通过设置-Dfile.encoding=utf-8改变了默认值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值