code: def _decode8(self, offset):
          
          # UTF-8 Strings contain two lengths, as they might differ:
          # 1) the UTF-16 length
          str_len, skip = self._decode_length(offset, 1)
          offset += skip
  
          # 2) the utf-8 string length
          encoded_bytes, skip = self._decode_length(offset, 1)
          offset += skip
  
          data = self.m_charbuff[offset: offset + encoded_bytes]
  
          assert self.m_charbuff[offset + encoded_bytes] == 0, \
              "UTF-8 String is not null terminated! At offset={}".format(offset)
  
          return self._decode_bytes(data, 'utf-8', str_len)
docs: Decode an UTF-8 String at the given offset
  
          :param offset: offset of the string inside the data
          :return: str