Да, нулевой байт в UTF8 - это кодовая точка 0, NUL.Существует нет другой кодовой точки Unicode, которая будет кодироваться в UTF8 с нулевым байтом где-либо внутри него.
Возможные кодовые точки и их кодировка UTF8:
Range Encoding Binary value
----------------- -------- --------------------------
U+000000-U+00007f 0xxxxxxx 0xxxxxxx
U+000080-U+0007ff 110yyyxx 00000yyy xxxxxxxx
10xxxxxx
U+000800-U+00ffff 1110yyyy yyyyyyyy xxxxxxxx
10yyyyxx
10xxxxxx
U+010000-U+10ffff 11110zzz 000zzzzz yyyyyyyy xxxxxxxx
10zzyyyy
10yyyyxx
10xxxxxx
Вы можете видеть, что все ненулевые символы ASCII представляются как они сами, в то время как все последовательности mutibyte имеют старший бит 1 во всех своих байтах.
Возможно, вам следует быть осторожнымчто ваш открытый текстовый протокол ascii не плохо обрабатывает символы не-ASCII (поскольку это будет все не-ASCII кодовые точки).