系统中出现字符长度问题,请各位帮忙。问题:系统默认字符是UTF-8编码,写入文本后GB2312编码。
目标:取得UTF-8字符写到文本(GB2312)后字节长度。
例:字符“张三”在程序中占用6字节,到文本中占4字节String a=“张三”;
取值后
a.getBytes().length=6;
a.length=2请教什么方法可以取到正确的长度4?
new String(accountHolderName.getBytes("UTF-8"),"8859_1").getBytes().length
new String(accountHolderName.getBytes("UTF-8"),"gb2312").getBytes().length
之类的方法都不行

解决方案 »

  1.   

    public static void main(String[] args) throws UnsupportedEncodingException
    {
    String a = "张三";
    //使用双字节编码对它进行解码
    byte[] b = a.getBytes("gb2312");
    //使用单字节编码对它进行编码
    String s = new String(b, "iso8859-1");
    //输出 4
    System.out.println(s.length());

    //使用iso8859-1的好处是它不会丢失信息,还可以将它还原

    System.out.println(new String(s.getBytes("iso8859-1"), "gb2312"));
    //输出 张三

    }