测试char*string是否包含多字节字符

cpx*_*cpx 4 c++ unicode multibyte

我从TCP服务器收到一个字节流缓冲区,它可能包含形成unicode字符的多字节字符.我想知道是否总有办法检查BOM以检测这些字符,否则你想怎么做?

dan*_*n04 8

如果您知道数据是UTF-8,那么您只需检查高位:

  • 0xxxxxxx =单字节ASCII字符
  • 1xxxxxxx =多字节字符的一部分

或者,如果您需要区分前导/跟踪字节:

  • 10xxxxxx =多字节字符的第2个,第3个或第4个字节
  • 110xxxxx = 2字节字符的第1个字节
  • 1110xxxx = 3字节字符的第一个字节
  • 11110xxx = 4字节字符的第一个字节