连续问了好几天的编码问题,也上网看了不少的帖子,自己想试一试编码的转换,所以写了一个程序试了一下,可弄到现在还是弄不明白是为什么?说一下我的主要目的:
我用的是日文操作系统,我下了一个软件,里面有一个README.TXT文件,我一打开是乱码。于是在“控制面版”里把“区域和语言”设置了一下,重启机器,再打开一看是中文,于是我又改回日语,想写一个小程序在日语的语言环境下把这个文本的内容以中文的形式输出来。但试了一天,结果也不像我想的那样,源程序如下:
package test.io;import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStreamWriter;public class ChineseOutput {
public static void main(String[] args) throws Exception{
//System.setProperty("file.encoding", "gbk");
File file = new File("readme.txt");
FileInputStream fi = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fi);
byte[] bytes = new byte[150];
bis.read(bytes);
System.out.write(bytes);
System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
System.out.println();
System.out.println();
String str = new String(bytes,"gb18030");
OutputStreamWriter osw = new OutputStreamWriter(System.out,"gb18030");
BufferedWriter bw = new BufferedWriter(osw);
bw.write(str);
bw.flush();
System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
System.out.println();
System.out.println();
System.out.println(str);
System.out.println("ccccccccccccccccccccccccccccccccccccccccccccccc");
System.out.println();
System.out.println();
}
}
结果如一楼所示:
我用的是日文操作系统,我下了一个软件,里面有一个README.TXT文件,我一打开是乱码。于是在“控制面版”里把“区域和语言”设置了一下,重启机器,再打开一看是中文,于是我又改回日语,想写一个小程序在日语的语言环境下把这个文本的内容以中文的形式输出来。但试了一天,结果也不像我想的那样,源程序如下:
package test.io;import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStreamWriter;public class ChineseOutput {
public static void main(String[] args) throws Exception{
//System.setProperty("file.encoding", "gbk");
File file = new File("readme.txt");
FileInputStream fi = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fi);
byte[] bytes = new byte[150];
bis.read(bytes);
System.out.write(bytes);
System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
System.out.println();
System.out.println();
String str = new String(bytes,"gb18030");
OutputStreamWriter osw = new OutputStreamWriter(System.out,"gb18030");
BufferedWriter bw = new BufferedWriter(osw);
bw.write(str);
bw.flush();
System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
System.out.println();
System.out.println();
System.out.println(str);
System.out.println("ccccccccccccccccccccccccccccccccccccccccccccccc");
System.out.println();
System.out.println();
}
}
结果如一楼所示:
幦�幟幤: EmEditor Pro v6.00.3 幒幒幓幆幇ˇ
幦�幱ˇ幵: 幹幮幬幠
幦�幚嘁幫: 幈嗑幁幦������������aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幒幦�幮幣幭帰帯幓帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵帯幵
幦�幟幤: EmEditor Pro v6.00.3 幒幒幓幆幇ˇ
幦�幱ˇ?: 幹幮幬幠
幦�幚嘁幫: 幈嗑幁幦������������bbbbbbbbbbbbbbbbbbbbbbbbbbb⑨⑨⑨⑨⑨⑨⑨⑨⑨⑨⑨⑨⑨∝?腥慨漏≠⑨⑨⑨⑨⑨⑨⑨⑨⑨⑨⑨⑨⑨
?腥叹疚: EmEditor Pro v6.00.3 ?步?E
?腥?E?: 面矢
?腥?房: ???腥
������������vccccccccccccccccccccccccccccccccccccccccccc
OutputStreamWriter osw = new OutputStreamWriter(System.out);
//可能控制台打不出来,让她显示在Label框吧
为什么在控制台中不好使呢?
≡≡≡≡≡≡≡≡≡≡≡≡≡『鳃佝信息』≡≡≡≡≡≡≡≡≡≡≡≡≡ 鳃佝名称: EmEditor Pro v6.00.3 汉化皝E 鳃佝觼E�: 中文鳃佝类型: 编辑鳃佝 there are some characters in str:98 ≡≡≡≡≡≡≡≡≡≡≡≡≡『鳃佝信息』≡≡≡≡≡≡≡≡≡≡≡≡≡ 鳃佝名称: EmEditor Pro v6.00.3 汉化皝E 鳃佝觼E�: 中文鳃佝类型: 编辑鳃佝 中国人民是好的 *******************
JAVA 爱好者加群 38236097