jdk上,
public byte[] getBytes()使用平台的默认字符集将此 String 编码为 byte 序列。这个默认的字符集可以通过【System.getProperty("file.encoding")】方法查出来吗?之前看到过文章说是,java平台的默认编码是unicode的(不是很确定),
写了下测试程序:System.out.println(System.getProperty("file.encoding"));1.输出gbk,不是unicode啊?
String str = "我";
System.out.println("===========默认==============");
byte[] b = str.getBytes();
for(int i=0;i<b.length;i++) {
System.out.println(b[i]);
}
System.out.println("===========Unicode==============");
byte[] b5 = str.getBytes("Unicode");
for(int i=0;i<b5.length;i++) {
System.out.println(b5[i]);
}2.这两个的输出结果也不一致啊,或者如果默认编码是其他的话,会不会一样呢?
3.写文件的时候,...........
txtFile = new File("3.txt");
if (txtFile.exists()) {
os = new FileOutputStream(txtFile);
osw = new OutputStreamWriter(os,"UTF-8");-----3.1
bw = new BufferedWriter(osw);
String str = "我----" + System.getProperty("line.separator") + "是一个兵";
bw.write(str);
}
...........如果【3.txt】的文件类型是【UTF-8】的时候,【3.1】的编码格式必须是UTF-8,而不能是GBK啊,
难道这种编码格式是根据写入的文件类型来决定的?
public byte[] getBytes()使用平台的默认字符集将此 String 编码为 byte 序列。这个默认的字符集可以通过【System.getProperty("file.encoding")】方法查出来吗?之前看到过文章说是,java平台的默认编码是unicode的(不是很确定),
写了下测试程序:System.out.println(System.getProperty("file.encoding"));1.输出gbk,不是unicode啊?
String str = "我";
System.out.println("===========默认==============");
byte[] b = str.getBytes();
for(int i=0;i<b.length;i++) {
System.out.println(b[i]);
}
System.out.println("===========Unicode==============");
byte[] b5 = str.getBytes("Unicode");
for(int i=0;i<b5.length;i++) {
System.out.println(b5[i]);
}2.这两个的输出结果也不一致啊,或者如果默认编码是其他的话,会不会一样呢?
3.写文件的时候,...........
txtFile = new File("3.txt");
if (txtFile.exists()) {
os = new FileOutputStream(txtFile);
osw = new OutputStreamWriter(os,"UTF-8");-----3.1
bw = new BufferedWriter(osw);
String str = "我----" + System.getProperty("line.separator") + "是一个兵";
bw.write(str);
}
...........如果【3.txt】的文件类型是【UTF-8】的时候,【3.1】的编码格式必须是UTF-8,而不能是GBK啊,
难道这种编码格式是根据写入的文件类型来决定的?
JVM默认字符集 和JVM运行时字符集是分开的?
指点一下
2.文件的编码格式是什么,那读出,输入的Strean流的编码格式就得是什么吗(问题3)
一般的,国内的如果window中文版的话,默认GBK的。
其次:当str为英文时:一下都是相等的。即兼容的
byte[] b=a.getBytes("ISO-8859-1");
byte[] b=a.getBytes("GBK");
byte[] b=a.getBytes();
byte[] b=a.getBytes("UTF-8");
而如果汉字的话:GBK两字节表示,UTF-8三字节表示,UTF-16四字节表示。