首先这个bug分给我,我不会c++,之前也没写过c++,所以有些地方和写法一定不是很科学,凑合看吧,分享给需要参考的人。
这个也是我自己百度+看菜鸟教程写出来的。
20210809修正下,有些地方没有删除,另外是把乱码的部分转换成n了,转换成什么自己替换啊.
//add
void filterErrUtf8(char chs[]) {
int i = 0;
while (i < strlen(chs)) {
short ch = chs[i];
if (ch > 0) {
i++;
continue;
}
ch += 256;
if (((ch >> 5) ^ 0x6) == 0) {
i++;
}
else if (((ch >> 4) ^ 0xE) == 0) {
i++;
}
else if (((ch >> 3) ^ 0x1E) == 0) {
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
}
else if (((ch >> 2) ^ 0x3E) == 0) {
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
}
else if (((ch >> 1) ^ 0x7E) == 0) {
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
chs[i++] = 'n';
}
else {
i++;
}
}
}