public class test {
public static void main(String[] args){
String in = "到沙发撒旦法萨法大是大非";

try {
BufferedReader r = new BufferedReader(new InputStreamReader(new StringBufferInputStream(in)));
String line;
while ((line = r.readLine()) != null)
{
line += "\n";

} } catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
上面的程序读取的line是乱码,找不到原因,各位高手帮忙,急

解决方案 »

  1.   

    lz这个程序最后line=null吧,是最后一次readline返回的值
    另外类名首字母要大写,line要初始化
    还试用了已经废弃的构造函数
      

  2.   

    没有设置文字格式,还有使用了jdk1.4以前的构造函数
      

  3.   

    new StringBufferInputStream
    这个已经过时了,你查看一下api就知道了,你想打印String in的值可以这样读取
    BufferedReader r = new BufferedReader(new StringReader(in)); 
      

  4.   

    BufferedReader r = new BufferedReader(new StringReader(in));
      

  5.   

    String in = "到沙发撒旦法萨法大是大非"; 
    换成
    String out = "到沙发撒旦法萨法大是大非"; 
    String in=new String(out,"gb2312");
      

  6.   

    String in = "到沙发撒旦法萨法大是大非"; 
    byte[] by ;
    String out = new String(in.getBytes(),"utf-8");
      

  7.   


    sorry,记错了
    String in = "到沙发撒旦法萨法大是大非";
    应该换成
    String out = "到沙发撒旦法萨法大是大非";
    String in=new String(out.getBytes(),"gb2312");
      

  8.   

    不知道你这个问什么出错,但你这个已经过时了。
    我写了一个运行OK,请参考。
    String in = "到沙发撒旦法萨法大是大非afaafafa";
    try {
    StringReader sr = new StringReader(in);
    BufferedReader br = new BufferedReader(sr,in.length());
    String line = "";
    if ((line = br.readLine()) != null) {
    System.out.println(line);
    }
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
      

  9.   

    try {
    // StringBufferInputStream类是一个过时类,在jdk文档中可以查到,此类
    // 此类未能正确地将字符转换为字节。从 JDK 1.1 开始,从字符串创建流的首选方法是通过 StringReader 类进行创建。
    // BufferedReader r = new BufferedReader(new InputStreamReader(new
    // StringBufferInputStream(in)));
    // System.in 为标准输入 类,此时可以在console中输入 你想要的字符串
    BufferedReader r = new BufferedReader(new InputStreamReader(
    System.in));
    String line = new String();
    String tmp = "";
    while (!(tmp = r.readLine()).equals("")) {
    line = line + tmp + "\n";
    } System.out.println(line);
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
      

  10.   

    BufferedReader r = new BufferedReader(new StringReader(in)); 
      

  11.   

    一般要用utf-8 台湾用gb2312
      

  12.   

    new InputStreamReader(new StringBufferInputStream(in),"UTF-8"));里面的UTF-8你自己根据情况修改 InputStreamReader是可以指定流的编码类型的,具体参考这个
    http://api.java2000.net/InputStreamReader