收到 byte 數組:[67, 82, 80, 0, -52, -52, -52, -52, -52, -52],new String(bytes) 顯示亂碼。
67, 82, 80 對應 ASCII 'C', 'R', 'P'。0 為結束符或填充。-52 (0xCC) 為 **VC++ 調試填充字節**(未初始化內存標記),非有效數據。0 結束)。int len = 0;
while (len < bytes.length && bytes[len] != 0) len++;
String str = new String(bytes, 0, len, "GBK"); // 或 UTF-8,視協議
**一定要明確編碼**(GBK/UTF-8/ISO-8859-1),且**僅解碼有效數據區**,丟棄填充/殘留字節。