Hallo,
In PHP oder auch in C interessiere ich mich aber sehr wohl für diese Ebene - dafür nur peripher um die Darstellung als Zeichen. Dafür ist das Frontend zuständig. Aber gerade wegen dieser maschinennahen Denkweise möchte _ich_ auch im Frontend die Möglichkeit haben, die Rohdaten zu sehen, mit denen die Software arbeitet.
Technisch gesehen ist ein PHP-String bloß eine Bytekette, aber eine PHP-Webanwendung interessiert sich in 95% der Fälle nicht für Bytes, sondern für Zeichen. Weil in PHP-Strings in den meisten Fällen natürlichsprachige Buchstaben, Wörter, Texte gespeichert werden. Eine vernünftige Anwendung nutzt daher eine Abstraktion wie mbstring.
Das Kodierungsproblem löst man üblicherweise dadurch, dass man überall UTF-8 verwendet, sodass man nicht ständig an (De-)Kodierung denken muss.
Alle sind sich einig, dass High-Level-Programmiersprachen native Unicode-Unterstützung haben sollten, sodass "ö".length bzw. strlen("ö") unabhängig von der internen Darstellung 1 ergibt. Bei PHP tut man sich nur schwer damit, das konsequent durchzuziehen, weil es 20 Jahre lang versäumt worden ist.
Wenn eine C-Anwendung natürlichsprachige Texte speichert und diese verarbeitet (z.B. dieses Forum hier), dann in den meisten Fällen zeichenbasiert. Wenn man da die Abstraktion vergisst, dann knallt es.
Kodierung ist gerade so ein Reizthema, weil man 50 Jahre lang »maschinennah« und nicht »menschennah« entwickelt hat. Viele höhere Programmiersprachen, Editoren, Protokolle und andere Tools sind deshalb falsch designt, und bei den Low-Level-Sprachen bedarf es besonderer Bibliotheken, um simpelste Unicode-Zeichenketten zu verarbeiten.
Mathias