用IO流读取到了一个字符串,已知是UTF-8格式的。需要输出。请问以下方法为什么不行result = new String(result.getBytes("utf-8"),"utf-8");
System.out.println(result);

解决方案 »

  1.   

    在读取到流的时候就要进行编码,
    用InputStreamReader isr=new InputStreamReader(input,"utf-8")对输入流进行编码。
    然后将读取字符串直接输出就可以了。
      

  2.   

    现在假设已经成String型得了该怎么转码呢
      

  3.   

    在读取到流的时候就要进行编码,
    用InputStreamReader isr=new InputStreamReader(input,"utf-8")对输入流进行编码。
    然后将读取字符串直接输出就可以了。这样就可以呀,为什么要把它弄成String,再转啊
      

  4.   

    楼主,一楼说你说的对。你的那种转码方式跟没转码是一样的。既然你说,已经得到了字符。那么问题相当于是这样的。发送方给字符用UTF-8进行编码,然后你用字符流接受的。你接受的时候,如果没字符集的设置的话。默认应该是用gbk字符集接受的。也就是你用的gbk进行解码。这样一定是乱码了。所以你应该是new String(str.getBytes("gbk"),"utf-8").
    问题就是上面说的这样的。上面我说默认用gbk解码,是我猜测的因为我没具体看到你的代码。也有可能你按照别的字符集进行的解码。但是道理是一样的。别的你应该也会改。
    但是最好的方式还是像2楼说的那样,接受的时候就做相应的设置。
      

  5.   


    如果你没有使用那个类进行转码,那么会被隐式的使用它转码,但是它的默认麻是提取的操作系统默认编码,windows系列的默认编码都是gbk,转码会不正常是显然的,而且转码是不可以失败的,一旦失败就再也转不回来了。
      

  6.   

    new String(str.getBytes("gbk"),"utf-8").纠正八楼的一个观点,str.getBytes("gbk")这一句是用gbk编码,而不是gbk解码,jvm对于字符有内部编码,是一个utf-8的变体版本,jvm不认识其它编码,而这一句的含义在于把jvm内部编码转换成gbk编码的一个byte数组。而new String(byte,"utf-8")的含义是,使用utf-8解码用utf-8编码的一个byte数组为jdk内部编码。
    new String(str.getBytes("gbk"),"utf-8"). 这一句纯粹属于扯淡,先把一个字符串编码成gbk,然后再用utf-8进行解码,无论什么情况,都是乱码.....
    最后解释一下new String(str.getBytes("iso-8859-1"),"utf-8"),iso-8859-1是个特例,它表示的是原始编码,这种编码不会改变原始数据,虽然它不能正确解析,但是不会改变数据本身,因此很多时候会看见这种解析方式。
      

  7.   

    拜托你好好看看别人的回答,再纠正别人。我没说str.getBytes("gbk")这一句是用gbk是解码。我说,他用字符流接受的时候,会利用一个字符集解码。从字节到字符不是解码是什么。好好看看再纠正。
      

  8.   

    大哥,你别纯扯淡。告诉你,发送放用utf-8编码,你接受的时候用gbk解码。生成的字符,你想转码必须new String(str.getBytes("gbk"),"utf-8")
    道理非常简单。
      

  9.   


    跟你说,编码问题没有特例。只是编码解码的问题。jvm中只有unicode编码大家都知道,不用强调,而且不是utf-8的实现。是utf-16 至于大端小端,没研究过。
      

  10.   

    我越来越糊涂了。发送端不是我写的,发送端是telnet服务器不知道为什么,InputStream可以读,但是套上InputStreamReader就读不出来了,就阻塞在read方法上了
      

  11.   

    所以只能用InputStream,所以没办法使用new InputStreamReader(input,"utf-8")
      

  12.   


    顶jiakai0419,各项说的很正确!
      

  13.   

    上面的回答却是忽略了一些问题。以前做的实验不够全面。这个是关于手工转码的http://blog.csdn.net/jiakai0419/article/details/7321846