我有一个 UTF-8 文本文件,我需要在 C 中导航。我需要将此文件拆分为单独的较小文件(即把它切成两半)。发生这种情况时,它有时会将多字节字符拆分为两个不同的文件。当一个笨拙的文本编辑器去读取包含文本后半部分的文件时,它会读取剪切字符的后半部分并变得混乱,因此无法正确显示其余文本。如果我逐字节读取,我如何判断我是在字符的开头还是在中间?非 ascii 兼容的 UTF-8 字符都以设置为 1 的前导位开始,但有些是两个字节,有些是三个字节。
编辑:没关系,我刚刚发现第一个字节包含字符长的前导 1 的数量。IE 一个三字节字符是 1110xxxx xxxxxxxx xxxxxxxx。