package dnfbridge import ( "bytes" "encoding/binary" "testing" "unicode/utf16" "unicode/utf8" "golang.org/x/text/encoding/simplifiedchinese" "longheng.io/server/internal/modules/dnf/raid" ) // 攻坚队窗口标题走 runtimeRaidObjectMode0 -> raid.BuildRaidObjectMode0Body。 // 这条路径曾经把队名转成 UTF-16LE(runtimeRaidUTF16LE),而客户端用读窄字节的 // sub_3457D20(dst,0x100,GetString(0x29D)) 读它,于是: // - 纯数字队名 "1111" 读到第一个 00 截断,窗口标题只显示 "1"; // - "礼白1" 的 UTF-16LE 3c 79 7d 76 31 被逐字节渲染成 " 0 && len(raw)%2 == 0 { hasZero := false for _, value := range raw { if value == 0 { hasZero = true break } } if hasZero || !utf8.Valid(raw) { return append([]byte(nil), raw...) } } value, err := decodeCharacterName(raw) if err != nil { value = string(raw) } units := utf16.Encode([]rune(value)) out := make([]byte, 0, len(units)*2) for _, unit := range units { out = append(out, byte(unit), byte(unit>>8)) } return out }