String.getBytes().length每台机器上得到的值为什么不同查处来的数据是韩文3个字在我机器上得到的值是6.
在其他机器上得到的值是3.不知道为什么不一样。例如:
"안녕해".getBytes().length=值可能是3或6不知道得到的值是因为什么。
是因为数据库不同吗。我这面的数据库是NLS_LANG=AMERICAN_AMERICA.AL32UTF8,而另外数据库是US7ASCII。还有不同点是我机器是中文系统,tomcat+eclipse+oracle(AMERICAN_AMERICA.AL32UTF8)得到的值是
"안녕해".getBytes().length=3另外机器,是韩文操作系统tomcat+eclipse+oracle(US7ASCII)得到的值是"안녕해".getBytes().length=6.
不知道这个getBytes()的值是因为什么不同,导致得到的值不一样的?

解决方案 »

  1.   


    try {
    System.out.println("안녕해".getBytes("gb2312").length);
    System.out.println("안녕해".getBytes("utf-8").length);

    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    可以看出上面个是9,下面个是3,LZ应该明白了吧
      

  2.   


    System.out.println("안녕해".getBytes().length );//3
    System.out.println("안녕해".getBytes("ISO8859-1").length );//3  
    System.out.println("안녕해".getBytes("Cp949").length );//6
    System.out.println("안녕해".getBytes("UTF-8").length );//9
      

  3.   

    想问一下,如果直接使用getBytes().的话,默认是根据什么字符来的
    是oracle的字符集,还是你eclipse的字符集,还是你系统的字符集,,,有知道的吗
      

  4.   

    getBytes()方法是老外设计的  老外最喜欢ISO8859-1的编码,所以默认他查找采用ISO8859-1的编码
      

  5.   

    getBytes() 这个方法是用你环境里默认字符集获得字节数组,在不同字符集下,字符的长度是不同的。
    看一下你环境里的默认字符集是什么,再看一你别人环境的是什么,应该是不一样的。
    System.out.println(System.getProperty("file.encoding"));
    试了下
    s.getBytes("ISO8859-1").length;   长度为=3
    s.getBytes("EUC-KR").length; 长度是6
      

  6.   

    getBytes()使用默认字符,而在不同的操作系统下,不同的地区和语言下,默认的编码是不一样的如果要跨平台运行,需要明确的指定统一的一个字符编码格式