现在有两个问题。
   1.String类有个getBytes(encoding)方法现在有两个字符串,都表示“中国”两个字。但是一个是GBK格式的(名字教GBKString),一个是utf-8格式的(UTFString)。
     问题是  GBKString.getBytes("GBK")  和UTFString.getBytes("utf-8");     我试了试,感觉应该是不等。但是如果不等的话,
       new String(GBKString.getBytes("GBK"),"GB2312");应该也是不等于
      new String(UTFString.getBytes("utf-8"),"GB2312");的。但是他们都是汉字中国。
2.一个jsp文件,其中有<%@ page contentType="text/html;charset=ISO8859_1" %> 我用记事本打开,显示正常。用eclipse 显示乱码。eclipse显示的时候是不是会用iso8859-1解释这个文件造成乱码。还是
  我以前用英文版的dreamweaver编辑页面的时候,在设计视图打的汉字看代码都成了iso8859-1的转义形式,现在中文版的,旧的iso8859-1页面可以正常显示,代码视图也是汉字显示。自己生成jsp页面改为charset=ISO8859_1"后,再次打开后他会自动改成gb2312,不知道问什么。总之,我脑子里面关于编码的问题很混乱,网上都是千篇一率的解决办法,我想知道原因。请大家多多指点。

解决方案 »

  1.   

    new String(GBKString.getBytes("GBK"),"GB");
    java中的字符串都是unicode编码,不存在编码转换问题.
    如果需要离开java环境,或者需要存储就会使用一种编码方式转成字节,当然根据这个字节又可以转回来,只要编码一致就可以.
      

  2.   

    eclipse默认用GBK,选中项目右键-》properties->Text file encoding选项改成你要的编码形式
      

  3.   

    jsp在eclipse显示为乱码是因为你eclipse中*.jsp的编码方式不是8859-1,你可以在下面地方修改
    window->preference->General->Content Types 打开text节点,选中 *.jsp 把下面的Default encoding改为ISO-8859-1,然后update就可以了
      

  4.   

    还有,你是怎么比较两个字符串相等的,如果都显示中国的话,GBKString.equals(UTFString)应该为true的吧
      

  5.   

    new String(GBKString.getBytes("GBK"),"GB");
    java中的字符串都是unicode编码,不存在编码转换问题.
    如果需要离开java环境,或者需要存储就会使用一种编码方式转成字节,当然根据这个字节又可以转回来,只要编码一致就可以.
      

  6.   

    ========================================================================
    java技术交流,讨论java的技术细节和最新技术。欢迎中高级程序员加入讨论。QQ群:3001581(人员有限,不接收初学者,谅解)
      

  7.   

    > new String(GBKString.getBytes("GBK"),"GB2312");应该也是不等于
    > new String(UTFString.getBytes("utf-8"),"GB2312");的。但是他们都是汉字中国。??new String(UTFString.getBytes("utf-8"),"GB2312") 应该是由乱码组成的字符串,不可能是“中国”两个字!
      

  8.   

    > new String(GBKString.getBytes("GBK"),"GB2312");应该也是不等于
    > new String(UTFString.getBytes("utf-8"),"GB2312");的。但是他们都是汉字中国。??new String(UTFString.getBytes("utf-8"),"GB2312") 应该是由乱码组成的字符串,不可能是“中国”两个字!
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    不是吧 ,我把utf-8的字符转变为为gb2312就成了乱码了。
      

  9.   

    jsp在eclipse显示为乱码是因为你eclipse中*.jsp的编码方式不是8859-1,你可以在下面地方修改
    window->preference->General->Content Types 打开text节点,选中 *.jsp 把下面的Default encoding改为ISO-8859-1,然后update就可以了
    +++++++++++++++++++++++++++++++
    我试了,原来默认就是iso8859-1的格式呀。
      

  10.   

    jsp在eclipse显示为乱码是因为你eclipse中*.jsp的编码方式不是8859-1,你可以在下面地方修改
    window->preference->General->Content Types 打开text节点,选中 *.jsp 把下面的Default encoding改为ISO-8859-1,然后update就可以了
    +++++++++++++++++++++++++++++++
    我试了,原来默认就是iso8859-1的格式呀。
      

  11.   


          new String(GBKString.getBytes("GBK"),"GB2312");应该也是不等于
          new String(UTFString.getBytes("utf-8"),"GB2312");的。但是他们都是汉字中国。new String(任何编码字串,"GB2312");
       不管是什么编码的字串,这两条语句最终又都按GB2312来编码,结果应该都是“中国”吧。除非UTF-8把字节内容作了修改。2 <%@ page contentType="text/html;charset=ISO8859_1" %>
    这里的ISO8859_1是下划线,ISO-8859-1是中划线