#include <stdio.h>
#include <stdlib.h>
// 检测UTF-8编码是否合法
int is_valid_utf8(unsigned char* text, int size) {
int i = 0;
while (i < size) {
if ((text[i] & 0x80) == 0x00) {
// 单字节字符
i += 1;
} else if ((text[i] & 0xE0) == 0xC0) {
// 2字节字符
if (i + 1 >= size || (text[i + 1] & 0xC0) != 0x80)
return 0;
i += 2;
} else if ((text[i] & 0xF0) == 0xE0) {
// 3字节字符
if (i + 2 >= size || (text[i + 1] & 0xC0) != 0x80 || (text[i + 2] & 0xC0) != 0x80)
return 0;
i += 3;
} else if ((text[i] & 0xF8) == 0xF0) {
// 4字节字符
if (i + 3 >= size || (text[i + 1] & 0xC0) != 0x80 || (text[i + 2] & 0x
c语言实现utf-8转utf-16,函数内使用malloc申请内存,同时检测合法性,输出错误
于 2023-07-08 18:05:58 首次发布
该代码实现了一个C语言函数,用于检测UTF-8编码的合法性并将其转换为UTF-16编码。如果输入的UTF-8序列无效,程序会返回错误信息。转换过程中,函数会检查并处理不同字节数的字符。

421

被折叠的 条评论
为什么被折叠?



