c - 如何导航 UTF-8 文本文件

标签 c parsing utf-8

我有一个 UTF-8 格式的文本文件,我需要在 C 中导航。我需要将该文件拆分为单独的较小文件(即,将其切成两半)。发生这种情况时,它有时会将多字节字符拆分为两个不同的文件。当一个愚蠢的文本编辑器去读取包含文本后半部分的文件时,它会读取剪切字符的后半部分并变得困惑,因此无法正确显示其余文本。如果我逐字节读取,我怎么知道我是在一个字符的开头还是在中间?非 ascii 兼容的 UTF-8 字符都以前导位设置为 1 开头,但有些是两个字节,有些是三个字节。

编辑:没关系,我刚刚发现第一个字节包含字符长的前导 1 的数量。 IE 一个三字节字符是 1110xxxx xxxxxxxx xxxxxxxx。

最佳答案

if ((*s & 0xc0) == 0x80) /* You are in the middle of */;

关于c - 如何导航 UTF-8 文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17152356/

相关文章:

c - realloc函数的使用

CUDA 内核启动参数解释对了吗?

Java .split() 方法分割 XML 参数

python - GAE Python 如何检查上传的文件类型

utf-8 - 如何制作 flex(词法扫描仪)来读取 UTF-8 字符输入?

mysql - 将 utf-8 编码的文本加载到 MySQL 表中

delphi - 使用 UTF8String 转换非规范化字符

CodeBlocks 在修改代码后不刷新我的程序

c - 用 C 预处理器模拟继承

解析 XML 字段并检索值的 SQL 查询