I have written a short article explaining why null terminated strings as they exist in C cannot represent proper ASCII and UTF-8 because of the null terminator. It's not a full explanation of how strings work but it might be helpful for you.
https://kttnr.net/blog/null-terminated-strings-are-incorrect...