From 33b5a2509e6e18ae37aa0e063d9c33165d18736d Mon Sep 17 00:00:00 2001 From: iwangjie <345127857@qq.com> Date: Tue, 18 Mar 2025 13:34:51 +0800 Subject: [PATCH] fix: Modify the string parsing logic to remove the potential "\0" problem --- .../fastdfs/domain/proto/mapper/FieldMetaData.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/github/tobato/fastdfs/domain/proto/mapper/FieldMetaData.java b/src/main/java/com/github/tobato/fastdfs/domain/proto/mapper/FieldMetaData.java index ab4247f..4651c32 100644 --- a/src/main/java/com/github/tobato/fastdfs/domain/proto/mapper/FieldMetaData.java +++ b/src/main/java/com/github/tobato/fastdfs/domain/proto/mapper/FieldMetaData.java @@ -98,7 +98,15 @@ public Object getValue(byte[] bs, Charset charset) { if (isDynamicField()) { return (new String(bs, offsize, bs.length - offsize, charset)).trim(); } - return (new String(bs, offsize, size, charset)).trim(); + String s = new String(bs, offsize, size, charset); + // C 风格:如果中间存在 '\0',只取前面部分 + int nullPos = s.indexOf('\0'); + if (nullPos >= 0) { + s = s.substring(0, nullPos); + } + // 再看看是否还要 trim() 前后空格 + s = s.trim(); + return s; } else if (long.class == field.getType()) { return BytesUtil.buff2long(bs, offsize); } else if (int.class == field.getType()) {