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

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条回答 默认 最新

  • threenewbee 2016-12-03 15:40
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序
  • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
  • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活