我有个String,他有且只有两者编码可能,要么是Big5要么是GB2312的.
但如何正确得到这个String的编码是Big5还是GB2312?
谢谢!

解决方案 »

  1.   

    : )byte[]     temp1,temp2;
    temp1   =   yourstring.getBytes("8859-1");
    temp2   =   yourstring.getBytes("gb2312");
    String   compstring1,compstring2;
    compstring1   =   new   String(temp1);
    compstring2   =   new   String(temp2);
    if(yourstring.equals(temp1))
    {
          //8859-1;
    }
    else
    {
          //gb2312;
    }
      

  2.   

    嗯?String默认的应该是unicode吧。。
      

  3.   

    也算经典问题了,把下面的收藏到自己的类库里去吧^_^http://dev.csdn.net/article/10/10961.shtm
    http://dev.csdn.net/article/10/10962.shtm
      

  4.   

    这个是没有意义的,就象一个文件里面全是2进制流,你可以用文本方式打开,也可以用2进制方式打开.
    那你能说它是文本文件还是2进制文件.
    只能是文本方式打开,操作系统按文本方式给你解释打开给你看(就可能有看不懂的乱码)
    以用2进制方式打开,操作系统按2进制方式给你解释打开给你看.
    比如说一个字节为65,文本方式就是A,2进制方式就是65.
    String的编码也是同样道理.
      

  5.   

    我记得在windows中有一个API可以通过统计学方式判断文本的编码,不过准确率不到90%
      

  6.   

    java有一个设定编码方式的方法,应该可以取得String 的编码方式
      

  7.   

    cenlmmx(学海无涯苦作舟) 
    说得有道理啊.只能说用什么样的编码去编码一个字符串.
      

  8.   

    在JAVA中对于中文的处理一般使用GBK或GB2312,这的区别:
       GBK   大的中文字符集;
       GB2312  相对于GBK较少;
      
       String ss="你好";
       byte[] temp_b = ss.getBytes("GBK");
       byte[] temp_s = ss.getBytes("GB2312);
       String ss_b= new String(temp_b);
       String ss_a= new String(temp_a);
    在这里的ss_b与ss_a是没有区别的!在JSP中处理中一般使用GBK(针对UNIX平台/Oracle/Apache)
       
      

  9.   

    大家都知道java是用unicode来“编码”字符串的,那解决这个问题前得先简单说说unicode和Big5,GB2312之类的文字标准之间的区别。Big5 GB2312这些称为文字标准,它不光规定了自己特定的字符集,还规定了字符的特定的字节存储形式。这样,同样的一个字,在不同的标准中会出现不同的储存形式,比如“中”字在Big5和GB2312中就是不同的编码。这也是会乱码出现的原因。
    那么,要解决这个问题该怎么办呢,就产生了unicode。unicode其实就是一个收录了地球上几乎所有的常用字符的大字符集,并给每一个字符一个不重复的编号。而这个编号的储存形式,那就看是给unicode编码的标准了,比如说UTF-8,UTF-16就都是unicode的编码标准。打个比方,就是我们用不同的方言说话,四川话,苏州话,虽然音不同,但字写出来时一样的,unicode就是那统一的文字,不同的编码就是各种方言的发音体系。
    而之前的Big5 GB2312就是不光发音不同,连文字也不一样,虽然 egg 蛋 能表达同样的意思。那么既然String里面用的是同一套字符序号,那怎么判断其所读入的文本的编码呢?那么可以寻找其编码的特殊字符,比如说某个繁体字符在Big5存在,但在GB2312中不存在,那么可以通过统计,推断出这个String来源于何种编码的文本了。当然,可信度不可能达到100%。to Polarislee(北极星)(北京那么大,何处是我家) ( ) 
    我前面回复中给的地址,里面的代码就是用统计学来判断编码。
      

  10.   

    首先要说明的是,String肯定是unicode编码方式,String的许多构造方法要求指明编码方式,例如使用byte[]构造时,系统将按该编码方式把字节数组转换成unicode编码,如果不指明,系统将根据jdk里指明的编码方式进行转换。
    你的String是从什么地方得到的?如果是从文件中得到的,我建议你从文件中读一部分内容出来,按两种编码方式转换,使用System.out.println输出看看,那种能正确显示,就是那种
      

  11.   

    支持 "sky_boxer(饿鱼骨头)" 兄,Java 中的字符串类 String 是以 unicode 方式存放的。问 String 是哪一种编码这个问题是没有意义的。详细说明,推荐参考一篇关于字符与编码的文章:
    http://www.regexlab.com/zh/encoding.htm