u012527786
角蚁
2016-12-03 14:58
采纳率: 100%
浏览 1.6k
已采纳

java String.getBytes统计超过1024byte的字节时出错

linux下的eclipse 64,neon版本,JDK1.8

在做socket通讯解析数据包时出现的,写了个小程序做测试

 package jiang;

import java.io.UnsupportedEncodingException;
import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextLine()){
            String str = scanner.nextLine();
            //byte[] strByte = str.getBytes();
            byte[] strByte = null;
            try {
                strByte = str.getBytes("UTF-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Integer len = strByte.length;
            System.out.println("长度为"+len);
        }
        scanner.close();

    }
}

输入字符串:

大叔大婶大所多我我后变动爱上导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算到静安寺坡大声道大叔大婶多大叔大婶大叔大叔dddddd

输出结果:长度为1029

输入字符串:

大叔大婶大所多我我后变动爱上导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算到静安寺坡大声道大叔大婶多大叔大婶大叔大叔的ddd

输出结果:长度为1035

输入字符串:

大叔大婶大所多我我后变动爱上导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算导师带时候对暗示对啊会死盾和啊速度和爱随后对按时段是和段数打碎的话丢失的打碎的打死段把低俗覆盖苏打手我彼此啊速度还是带速度还是大慧寺等你哦爱上带回到第三到的海外度搜啊擦搜不到大叔大婶多你发哦到大神你撒打算到静安寺坡大声道大叔大婶多大叔大婶大叔大叔的的

输出结果:长度为1035

输入字符串:

的的

输出结果:长度为6

输入字符串:

的ddd

输出结果:长度为6

输入字符串:

dddddd

输出结果:长度为6

按照正常的情况,一个中文在utf-8下是3个字节,英文字母是1的字节,但是前两条测试,我将**ddd**替换为**的**,字节差了6个,这个情况是在超过1024字节才会出现

请教一下可能出现了什么问题?已经调了大概一天了,才定位到这个问题

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

相关推荐