我查了一下api没有找到,而且,我想,从理论上来说这种函数是不存在的。
因为同一个string,不同的encode,显示时就会出现不同的值,但是在class文件里是用一样的unicode表示的。
所以一个string可能对应很多中encode,假如日文和中文都是通过用二个最高位为1的字节来表示一个字符,那么同一个string就可能是一个中文字符,也可能是一个日文字符,显示的时候就看你的系统环境了吧。

解决方案 »

  1.   

    这么说来,
    String里要是有一个属性,
    用来描述自己(this)的编码方式就好了!
      

  2.   

    看你存进 数据库 用什么 编码?
    拿出来 用什么编码
    不过 还有你的 数据库支持什么 编码?
    最近我们也遇到了编码问题
    环境是 linux+apache+tomcat+mysql
    这些东西用的都是 iso-8859-1编码
    所以存中文的时候,要把gb2312转成8859_1
    去数据的时候 在转回来
    很麻烦
      

  3.   

    不理解Java才提出的一个问题,在java中,所有的字符串都是采用unicode格式的,唯有跟外部系统交流的时候才涉及到转换,例如与IE浏览器,与数据库等。在windows平台,一般汉字解码,使用GBK就可以了。
      

  4.   

    应该不可能,我是这样感觉,如果可能的话,也应该是分析其中的数据,比如Word和PDF文件的编码格式一定不同,不过应该先了解编码的细节才能得出具体如何编码的。
      

  5.   

    这个函数是没有实用价值的。
    1。 在jvm中所有的字符都是unicode.
    2.  String的encode方式是由jvm属性file.encoding指定的。所有读进和写出的String都会被转换成file.encoding指定的编码方式。(inputstream和outputstream除外).所以在jvm中所有的String对象的编码方式都是file.encoding指定的编码方式。举个小例子:
    public class a{
    main(String[]){
       String s = "中文";
       System.out.println("length:"+s.length());
    }
    }javac -Dfile.encoding=GBK a.java
    java -Dfile.encoding=GBK a.java
    结果是 :2javac -Dfile.encoding=ISO8859-1 a.java
    java -Dfile.encoding=ISO8859-1 a.java
    结果是 :4由此可见,String对象的编码方式和file.encoding有关。搂主所说的api是不存在而且也没有必要存在的。
      

  6.   

    你只要用某种编码方式读出来就可以了,不用考虑他本身的编码方式,类似于加密,要想解密呢,你要知道算法,单给你一个加密的串你是不知道算法和密钥的
    除非你自己设计一个MyString类,所有用到的string的地方都用你自己定义的,
    在里面加一个编码方式的属性
      

  7.   

    public String getString(String s)
    {
     byte[] b=s.getBytes("编码方式");
     String sTemp=new String(b);
     return sTemp;
    }
    返回你所想要编码方式的字串。