猿问

JAVA汉字编码问题

我用JavaIO流读硬盘中的文本文件,英文及标点符号可以正常显示,但中文变成了乱码?怎么回事,是编码问题吗?怎么解决?求各位大神指教?在下感激不尽

源代码
package IoTest;
import java.io.*;

public class reader {
	public static void main(String[] args)throws IOException {
		File in=new File("D:\\听力\\stack.txt");
		System.out.println(in.exists());
		System.out.println(in.canRead());
		
		FileInputStream fin=new FileInputStream(in);
		/*int b=0;
		while((b=fin.read())!=-1);{
			
		
		System.out.print((char)b);
		}
		*/
		byte[] buf=new byte[20*1024];
		int bytes=fin.read(buf, 0, buf.length);
		for(int i=0;i<bytes;i++){
			if(bytes!=-1){
				System.out.print((char)buf[i]);
			}
		}
		fin.close();
		
	}

}

输出结果

true
true
package Exam;
import java.util.*;

public class exam1 {
	public static void main(String[] args) {
		Stack<Character> s=new Stack();//?????????????????¢????????????????????????
		s.push('a');
		s.push('b');
		s.push('b');
		s.push('a');
		char w[]={'a','b','b','a'};
		int j=0;
		for(int i=0;i<w.length;i++){
			if((w[i]==s.pop())){
				//?????????????????????????????????????????????????????????¢??
				j++;//?????????????¢????????????????????????????????
				}
			if(j==(w.length-1)){
				System.out.println("??????");
			}
			}
		}
}

正常结果应为

package Exam;
import java.util.*;

public class exam1 {
	public static void main(String[] args) {
		Stack<Character> s=new Stack();//容器必须使用包装类,因为容器内存放的是对象
		s.push('a');
		s.push('b');
		s.push('b');
		s.push('a');
		char w[]={'a','b','b','a'};
		int j=0;
		for(int i=0;i<w.length;i++){
			if((w[i]==s.pop())){
				//先进后出,第一个和最后一个比,第二个和倒数第二个比,以此类推
				j++;//计数器,如果相等的次数等于数组的个数,则是回文
				}
			if(j==(w.length-1)){
				System.out.println("是回文");
			}
			}
		}
}

还有一个问题就是我注释掉的部分,为什么读取不了,第二种可以。

求各位大神指教

蒲公英wsg
浏览 1639回答 2
2回答

慕的地6079101

癫浠戊 整莰鲡 规误踪 堠咳窦 锈牢帼 噌堋拴 吁乍红 厶赕转 晁沁觅 揶厘苯 睬焙烃 裹埔窦 褂鄢曝 蹑芄导 匮挺莶 春举阁 鹜窟钬 诽鄄裔 筮愿僚 扯聍驷 碌起申 额况赶 冶八谪 冁奴绑 俳谀毡 托凼捏 搬苑炷 预疥客 确攫醣 锥陂峄 松由淆 誉皙砘 馀牛啬 重京迁 蝙鬈岜 毙募客 抱冫荛 撂断闰 催髡吨 级亩茯 痰喁葵 可岬鲟 先懂岜 媲余呕 守掏黹 雒胶梧 射鲰鹈 坯黩拽 睁遂轮 妊奶被 权侪种 唰鼎亨 雍鳜鹉 镗柁莽 锊悼杳 霪漱呸 曷宿疵 苇妓莨 槲觜鼹 遽靓遛 酲数寻 杌氓蛤 桊嗑莅 革捣晒 螭鼋伏 桥琊堰 锹葱鼹 西杀谈 卢曙机 铛密泷 粮舯驹 今醴旄 婉砂亓 捆露痞 累啧炝 宗慈像 隧跷菊 缰妫馗 姝翅对 钼嚷垧

rookie2maven

中文是2字节,so你每次读取一个字节,难道你要它2字节凑成一字符给你输出出来,一个字符2字节和汉字一致, 官方建议字符读取采用FileReader。

蒲公英wsg

我错了,那多了一个引号。编码问题还请各位大神指教
随时随地看视频慕课网APP

相关分类

Java
我要回答