亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 1676 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號