这样的问题有解决方案吗?
String str = new String("你好吗?");//默认编码是unicode吧?
byte[] data = str.getBytes();//这里获取到的字节数组不存在编码格式的问题吧?
String str2 = new String(data,"GBK");//str2的字符编码是GBK的格式?
//那么如何获取str2的编码格式呢?

解决方案 »

  1.   

    String str = new String("你好吗?"); //和你的编译器与操作系统有关。没有绝对的。不过内部存储都是采用的unicode格式(ISO8859-1)byte[] data = str.getBytes();  //使用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。 String str2 = new String(data,"GBK"); //构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。直接求字符串的编码格式倒没看到,有求流的
    public String getEncoding()返回此流使用的字符编码的名称。 
      

  2.   

    1、javac的默认编码是系统本地编码
    2、String str = new String("你好吗?");//默认编码是unicode吧? - 这个语句如果要编译通过的话,需要两个条件中的一个:(1)系统默认编码是GBK或者能够覆盖GBK编码的其他编码(2)在编译时指定-encoding为GBK或者能够覆盖GBK编码的其他编码
    3、上面那条语句中的注释答案为:不一定,严格地讲,默认编码是系统默认编码。例如,中文系统的默认编码为GBK. 
    4、byte[] data = str.getBytes();//这里获取到的字节数组不存在编码格式的问题吧?
    这个地方的确不存在什么问题,也不应该有什么问题。详细的说,这里Java会对字符串的字符用本地系统默认编码格式进行编码(char[]-〉byte[]),如果本地默认系统的编码不被JVM支持,就采用ISO-8859-1进行编码。
    5、String str2 = new String(data,"GBK");//str2的字符编码是GBK的格式?
    这里,指定的编码适用于解码的(byte[]->char[])。
    6、//那么如何获取str2的编码格式呢?
    不需要获取,就是本地系统的默认编码。一定要获取的话,用System.getProperty("file.encoding");
    =============================================================================================
    Java中的字符类型可以表示任何一个Unicode编码中的字符,但是,这并不意味着Java源代码的默认编码是Unicode. 相反,Java源代码可以是任何类型的编码。这里,如果想更深入地了解,编码在Java程序各个阶段的转换细节,请参考:http://www.ingrid.org/java/i18n/utf-16/。
      

  3.   


    String str = new String("你好吗?");//默认编码是unicode
    byte[] data = str.getBytes();//平台默认编码 eclipse是gbk,windows下记事本也是gb2312(gbk的子集)
    String str2 = new String(data,"GBK");//str2的字符编码是unicode(java默认编码)
    //貌似不好获取。java中所有的东西都是unicode存储的。 String可以看源码是 char[]数组存储的。

      

  4.   

    简单点说就一句话。
    Java 中,字符串类 java.lang.String 处理的是 UNICODE 字符串,不存在编码格式的概念
    String str=new String("你好吗?");//默认编码是unicode吧?
    //"你好吗?"是一个字符串,他的每一个字符都对应一个唯一的序号--两个字节(unicode规则),String类就是处理这些序号的。
    byte[] data= str.getBytes();//这里获取到的字节数组不存在编码格式的问题吧?
    //字节数组。本身并没有编码格式,其实只有进行字符和字节的转化时才有这个概念,但按不同的编码取的数组是不同的。
    String str2=new String(data,"GBK");//str2的字符编码是GBK的格式?//那么如何获取str2的编码格式呢?
    //还是最上面那句话,java.lang.String 处理的是 UNICODE 字符串;这个语句会把字节数组data按“gbk”的编码形式来转成字符串,而String类还是把这个字符串按unicode来处理,
    //第二个问题也就不是问题了,str2并没有编码格式。。一定要说有的话,就只是unicode,永远都是