I can see why - C was written on a time when each letter was a single byte, so string functions could simply reuse array utilities. UTF-8 has a variable character length from anywhere between 1 and 4 bytes, so now a task as simple as determining the length of a string variable now needed specific algorithms. And don't get me started on balancing the prevention of buffer overflows vs. wasted allocation.