请问各位大虾
   java里的汉字应该怎么才占一个字节呢?比如:"交易成功"才算4位吗?如何让他算8位呢?多谢了

解决方案 »

  1.   

    JAVA中使用unicode编码,unicode里每个字符都占两个字节
      

  2.   

    但是为什么会出先如下问题:String a="交易成功0009"
    String b=a.substring(0,4)
    得出来的结果
    b="交易成功0009"
      

  3.   

    我是从unix接收到的数据,应该转换一下编码吗?
      

  4.   

    不好意思,上面写错了
    String a="交易成功0009"
    String b=a.substring(0,8)
    得出来的结果
    b="交易成功0009"
    而正确的是想要 b="交易成功"
      

  5.   

    substring是按字符个数来截取的,不是按字节截取的
      

  6.   

    String a="交易成功0009";
    String b=a.substring(0,4);
      

  7.   

    可是我不能改成String b=a.substring(0,4);
    因为8是我从数据包里取出来的,完整的包是这样的"0008交易成功0009jfdkf",我先取出0008知道要取的数据位数是8,然后再取,所以就出现这个问题了
      

  8.   

    /**
       * 按字节长度截取字符串
       * @param str 将要截取的字符串参数
       * @param toCount 截取的字节长度
       * @param more 字符串末尾补上的字符串
       * @return 返回截取后的字符串
       */
      public static String substring(String str, int toCount, String more) {
        int reInt = 0;
        String reStr = "";
        if (str == null)
          return "";
        char[] tempChar = str.toCharArray();
        for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) {
          String s1 = str.valueOf(tempChar[kk]);
          byte[] b = s1.getBytes();
          reInt += b.length;
          reStr += tempChar[kk];
        }
        if (toCount == reInt || (toCount == reInt - 1))
          reStr += more;
        return reStr;
      }