问题描述
publicclasstest{publicstaticvoidmain(String[]args){Stringin="到沙发撒旦法萨法大是大非";try{BufferedReaderr=newBufferedReader(newInputStreamReader(newStringBufferInputStream(in)));Stringline;while((line=r.readLine())!=null){line+="n";}}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}上面的程序读取的line是乱码,找不到原因,各位高手帮忙,急
解决方案
解决方案二:
lz这个程序最后line=null吧,是最后一次readline返回的值另外类名首字母要大写,line要初始化还试用了已经废弃的构造函数
解决方案三:
没有设置文字格式,还有使用了jdk1.4以前的构造函数
解决方案四:
newStringBufferInputStream
这个已经过时了,你查看一下api就知道了,你想打印Stringin的值可以这样读取BufferedReaderr=newBufferedReader(newStringReader(in));
解决方案五:
BufferedReaderr=newBufferedReader(newStringReader(in));
解决方案六:
Stringin="到沙发撒旦法萨法大是大非";换成Stringout="到沙发撒旦法萨法大是大非";Stringin=newString(out,"gb2312");
解决方案七:
Stringin="到沙发撒旦法萨法大是大非";byte[]by;Stringout=newString(in.getBytes(),"utf-8");
解决方案八:
引用5楼WN2007的回复:
Stringin="到沙发撒旦法萨法大是大非";换成Stringout="到沙发撒旦法萨法大是大非";Stringin=newString(out,"gb2312");
sorry,记错了Stringin="到沙发撒旦法萨法大是大非";应该换成Stringout="到沙发撒旦法萨法大是大非";Stringin=newString(out.getBytes(),"gb2312");
解决方案九:
不知道你这个问什么出错,但你这个已经过时了。我写了一个运行OK,请参考。Stringin="到沙发撒旦法萨法大是大非afaafafa";try{StringReadersr=newStringReader(in);BufferedReaderbr=newBufferedReader(sr,in.length());Stringline="";if((line=br.readLine())!=null){System.out.println(line);}}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
解决方案十:
try{//StringBufferInputStream类是一个过时类,在jdk文档中可以查到,此类//此类未能正确地将字符转换为字节。从JDK1.1开始,从字符串创建流的首选方法是通过StringReader类进行创建。//BufferedReaderr=newBufferedReader(newInputStreamReader(new//StringBufferInputStream(in)));//System.in为标准输入类,此时可以在console中输入你想要的字符串BufferedReaderr=newBufferedReader(newInputStreamReader(System.in));Stringline=newString();Stringtmp="";while(!(tmp=r.readLine()).equals("")){line=line+tmp+"n";}System.out.println(line);}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
解决方案十一:
BufferedReaderr=newBufferedReader(newStringReader(in));
解决方案十二:
一般要用utf-8台湾用gb2312
解决方案十三:
天,楼上的说台湾用gb2312?
解决方案十四:
newInputStreamReader(newStringBufferInputStream(in),"UTF-8"));里面的UTF-8你自己根据情况修改InputStreamReader是可以指定流的编码类型的,具体参考这个