You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何检测Encoding.Unicode.GetBytes()返回字节数组中的DEL字符?

关于Unicode中DEL字符的表示及检测方法

嘿,刚好碰到过类似的场景,给你详细捋一捋:

首先,DEL字符的Unicode码点是U+007F,和ASCII里的DEL完全一致——Unicode兼容所有ASCII的0-127字符,码点是一一对应的。

但关键在于你用Encoding.Unicode(.NET里这个其实是UTF-16小端字节序)编码时,这个字符会被转换成两个字节:0x7F 0x00(也就是十进制的127和0)。因为UTF-16对BMP范围内的字符(U+0000到U+FFFF)都是用两个字节存储,小端模式下低字节在前。

检测方法推荐

直接检测字节数组需要注意字节序,更可靠的方式是先解码成字符串再检查:

// 先把字节数组解码为Unicode字符串
string chatContent = Encoding.Unicode.GetString(yourByteArray);
// 检查是否包含DEL字符
bool hasDelCharacter = chatContent.Contains('\u007F');

如果因为性能原因不想解码整个数组,也可以直接在字节数组里查找连续的127和0:

bool hasDel = false;
for (int i = 0; i < yourByteArray.Length - 1; i++)
{
    if (yourByteArray[i] == 127 && yourByteArray[i+1] == 0)
    {
        hasDel = true;
        break;
    }
}

额外提醒:如果你的聊天程序后续有可能切换到其他Unicode编码(比如UTF-8),DEL字符在UTF-8里还是单字节0x7F,所以解码后检查'\u007F'的方式兼容性更好,不用改逻辑。

内容的提问来源于stack exchange,提问作者user9648480

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:13:42