java中的字符串在内存中是以unicode的编码方式存储的,在下面的代码中,“中文”编码默认使用编译器默认的编码方式(GBK),如果想正确显示"中文"需要使用"GBK"解码,再使用"GBK"编码方式创建字符串 
代码
package com.huawei.charset.test01;   
  
import java.io.UnsupportedEncodingException;   
  
public class MainTest01    
{   
  
    public static void main(String[] args)    
    {   
        String test = "中文";   
        try {   
            System.out.println(new String(test.getBytes("utf-8"),"utf-8"));   
        } catch (UnsupportedEncodingException e)    
        {   
            e.printStackTrace();   
        }   
  
    }   
  
}   
但是上面的代码在eclipse中调整编码方式,总不能打印出希望的乱码,总可以正常显示“中文”,请问这是为什么?是在eclipse中设置的不对吗? 
window->preferences->workspace 
与 
project->properties->info我都尝试了,就是不可以 
还有就是使用"gbk"编码。查看中文十六进制D6D0 CEC4(这样却认为GBK),使用上面的代码为什么仍可以正常打印“中文”而不是乱码? 
是不是我自己理解错误,应该是使用什么编码方式编码在使用同样的编码方式解码才可以正常显示的 
到底什么地方出错了,请各位指点迷津 
还有顺便帮忙指点一下,怎么改变eclipse中的字符串编码方式 
非常感谢

解决方案 »

  1.   

    用utf8解码再用utf8编码自然不会乱码还有eclipse的编码只是文件本身的编码,这个只影响编译期,不影响运行期
    http://blog.csdn.net/believefym/archive/2007/05/31/1633488.aspx
      

  2.   

    其实我觉得还是在MSDOS下,然后用javac -encoding utf-8 ***.java编译它,就没有什么问题了
      

  3.   

    还有eclipse的编码只是文件本身的编码,这个只影响编译期,不影响运行期
    这是什么意思?我的意思是 上述代码中的“中文”是GBK编码,我使用utf-8解码再使用utf-8编码,为什么没有出现乱码,小弟,没有理解明白,正在看你得blog,还没有看完
    呵呵