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

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 vue3加ant-design-vue无法渲染出页面
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序