gpt4 book ai didi

node.js - 检测从缓冲区读取的部分或不完整的字符

转载 作者:搜寻专家 更新时间:2023-11-01 00:09:04 25 4
gpt4 key购买 nike

在一个循环中,我正在读取一个流,它被编码为 UTF-8,每个循环中有 10 个字节(比方说)。由于首先将流传递到缓冲区,因此在将其转换为 UTF-8 字符串之前,我必须以字节为单位指定其读取长度。我面临的问题是有时它会读取部分、不完整的字符。我需要解决这个问题。

有没有办法检测字符串是否以不完整的字符结尾,或者我可以对字符串的最后一个字符执行一些检查以确定这一点?

最好是“非单一编码”解决方案。

最佳答案

如果一个缓冲区以一个不完整的字符结尾,你将它转换成一个字符串,然后从该字符串初始化一个新的缓冲区,新的缓冲区将是一个不同的长度(如果你使用 utf8 则更长,如果你使用 utf8 则更短使用 ucs2) 而不是原来的。

类似于:

var b1=new Buffer(buf.toString('utf8'), 'utf8');
if (b2.length !== buf.length) {
// buffer has an incomplete character
} else {
// buffer is OK
}

用您想要的编码替换“utf8”。

请注意,这取决于 Buffer#toString 的当前实现如何处理不完整的字符,这没有记录在案,但不太可能以导致相等的方式进行更改-长度缓冲区( future 的实现可能会抛出错误,因此您应该将代码包装在 try-catch block 中)。

关于node.js - 检测从缓冲区读取的部分或不完整的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com