"java在执行的时候所有的字符都是被转成unicode, 包含编译后的.class档案", 请问一下java在读取与写入的时候他的编码是如何转换的?
读取部分 :
假设这时我使用FileInputStream来读取一个utf-8的档案,
FileInputStream f = new FileInputStream("d:\test.txt");
while((length = stream.read(buffer, 0, 1024)) != -1) {
String str = new String(buffer, 0, length);
}
这时我印出length, 他所显示中文字符是占用了3个byte(length = 3)代表是UTF-8不是unicode, JVM什么时候会将他转成unicode呢? 不是说字符都是unicode处理吗?
写入部分 :
OutputStream os = new FileOutputStream("d:\\one.txt", true);
String str = "hello world 测试\r\n";
byte[] buffer = str.getBytes();
os.write(buffer);
os.close();
这时系统自动产生的档案是UTF-8格式, 网络上说会以作业系统的默认编码的格式, 写入的内容当然也是UTF-8编码, 这部分不太确定~
我想请问写入时strm 会先经过JVM将str以 unicode编码 再转成 UTF-8输出吗?
如果上面有错误的地方再麻烦各位修正