为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA汉字编码问题

JAVA汉字编码问题

蒲公英wsg 2016-10-28 20:15:49
我用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("是回文"); } } } }还有一个问题就是我注释掉的部分,为什么读取不了,第二种可以。求各位大神指教
查看完整描述

2 回答

?
rookie2maven

TA贡献278条经验 获得超76个赞

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


查看完整回答
反对 回复 2016-10-30
?
蒲公英wsg

TA贡献242条经验 获得超126个赞

我错了,那多了一个引号。编码问题还请各位大神指教

查看完整回答
反对 回复 2016-10-28
  • 2 回答
  • 1 关注
  • 1638 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信