先谢谢路人甲!
由于我取得到字符串的编码方式已经不是唯一的,所以如果全都用
str = new String(str.getBytes("ISO-8859-1"),"GB2312");这种方式进行
编码肯定是不行了,只能对需要编码的才编码,但是就是不知道那些需要那些不需要,
不知道如何去判断,请大家继续指点!谢谢!

解决方案 »

  1.   

    要是你自己把这个问题解决了,你可以算得上是java本地化专家了:)
    在Windows平台好像是有个API能够以统计的方式来推断字符串的编码,但是在java里……
    你的字符串来源是?
      

  2.   

    我的字符串来源是新闻组里的的邮件标题,由于投递系统的问题,导致某些标题是
    正常的,某些标题经过mime编码后但是没有正常的解码,这一部分标题取出来后如果进行字符集编码就会出现乱码的情况。由于投递系统的问题暂时无法解决,所以考虑在显示方面做到正常显示就行了。希望大家能给予帮助,谢谢!
      

  3.   

    好象Java里没有取得字符串的encoding的函数,可以试一下以下方法,
    假设要判断的字符串为inputString
    InputStreamReader reader = new InputStreamReader(new ByteArrayInputStream(inputString.getBytes()));
    String encoding = reader.getEncoding();
    不知道这个方法行不行?
      

  4.   

    好像只能取到操作系统的字符集“GBK”。
      

  5.   

    to:bonnieweb 请问根据什么条件来比较呢?
    转了之后肯定就不一样了,不管需不需要.
      

  6.   

    在不知道encoding的情况下转出来的字符串一定是错误的呀,何来比较之说?
    邮件本身没有说明自己的locale吗?
      

  7.   

    难道,
    没有人能完成我的
    删除功能了
    请到标题为 "java的删除问题,大家来看看?" 来看看呀!我碰到了难题呀,
    那位兄台帮我解决了,会给你加分呀!欢迎你们的到来呀!我期盼着.....
    十万火急,
      

  8.   

    我现在需要判断的就是一个字符串是否需要做下面形式的字符集转换.
    String str = class.getString();
    str = new String(str.getBytes("ISO-8859-1"),"GB2312");
    现在存在某些字符串需要而某些又不需要,不需要的如何做了转换就会成乱码了,
    所以一定要判断才可以,就是不知道该如何去判断.
      

  9.   

    我在用JDBC时遇到相类似的字符集问题,也未解决。
      

  10.   

    >我现在需要判断的就是一个字符串是否需要做下面形式的字符集转换.
    >String str = class.getString();
    你要知道,java的String已经是unicode的了,在你解读邮件内容的时候你的string内容很可能已经是错误了!另外你这里用class作为变量名太容易令人误解了。>str = new String(str.getBytes("ISO-8859-1"),"GB2312");
    因为str的内容本来就是错误的,这样的转换是没有意义的。我想你的结果应该是一堆问号,这是Unicode的规定。另外中文的encoding是GBK吧?
    >现在存在某些字符串需要而某些又不需要,不需要的如何做了转换就会成乱码了,
    >所以一定要判断才可以,就是不知道该如何去判断.