角蚁 2016-12-03 06: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 07:40
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing