gpt4 book ai didi

c - 如何确定文件是否包含类似 UTF-8 的字符

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:32 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,它将一个文件作为输入,迭代该文件,然后检查该文件是否包含 UTF-8 编码的字符。

但是我不确定如何处理 UTF-8 编码的问题。我理解编码背后的基本概念,它可以存储在 1-4 个字节中,其中 1 个字节只是 ASCII 表示 (0-127)。

1字节:0xxxxxxx

对于其余部分,我认为模式是这样的:

2字节:110xxxxx 10xxxxxx

3字节:1110xxxx 10xxxxxx 10xxxxxx

4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

但是,我很难理解如何在 C 代码中实现它。我知道我将如何迭代文件,并在 UTF-8 编码的谓词成立时执行某些操作:

while ((check = fgetc(fp)) != EOF) {
if (*) {
// do something to the code
}
}

但是,我不确定如何实际修改 UTF-8 编码并将其实现为 C(或任何没有内置函数的语言,例如 C# UTF8Encoding)。

作为一个使用与 ASCII 类似的逻辑的简单示例,我将迭代每个字符(指向检查变量)并验证它是否在 ASCII 字符限制内:

if (check >= 0 && check <= 127) {
// do something to the code
}

只有在尝试确定检查变量是否指向 UTF-8 编码字符时,谁能尝试向我解释我将如何使用类似的逻辑?

最佳答案

if ( (ch & 0x80) == 0x0 ) {
//ascii byte
}
else if ( (ch & 0xe0) == 0xc0 ) {
// 2 bytes
}
else if ( (ch & 0xf0) == 0xe0 ) {
// 3 bytes
}
else if ( (ch & 0xf8) == 0xf0 ) {
// 4 bytes
}

您想要按位 & 前 x 位并检查前 x-1 位是否为 1。它有助于以二进制形式写出数字并进行后续操作。

关于c - 如何确定文件是否包含类似 UTF-8 的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57912916/

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