本人最近看到网上流传的张孝祥老师的一个程序,如下:
该程序第6行将平台默认编码修改为iso8859-1,在第10行调用getBytes()将unicode字符串strChina编码为平台默认编码即iso8859-1.
按道理,程序11-12行应该输出字符串StrChina的iso8859-1编码,但我测试的时候,并没有出现预期的结果,而是还是按GB2312编码输出,如图2,说明在第6行的设置没有生效.但是张孝祥老师的视频显示里却生效了的,输出了iso8859-1,如图3.
于是通过测试,我在jdk1.4.1及以下版本下运行结果是图3,而在jdk1.4.2及以上是图2结果.
图1:源代码
图2,jdk1.4.2及以上版本运行结果
图3:jdk1.4.1及以下版本运行结果
请高手为我解答一下:
(1)为什么在jdk1.4.1及以下版本可以通过file.encoding属性修改平台默认编码,而以上版本不行,两者的实现机制区别在哪里?
(2)如果在jdk1.4.2及以上版本修改平台默认编码,即得到图3的结果,应该怎么做?
(3)file.encoding在java里面到底是什么意思?是不是像张孝祥视频教学中说的那样是修改平台默认编码用的