Hehe, wir kommen uns näher :)
Ne, worauf ich hinauswill, ist dieser Umstand:
Serverseitig wird 'äöüß' gesendet, wobei es völlig egal ist, welcher Response-Header dem vorangeht. Der Ordnung halber und fürs bessere Verständnis werden wir jedoch entweder ein
Content-Type: text/plain
oder ein
Content-Type: application/octet-stream
als Response-Header senden. Das ändert nichts an der Tatsache, dass in beiden Fällen Rohdaten (Bytes) durchs Netz schwirren, auch wenn das Protokoll Hyper-Text... heißt.
Allein mit dem xhr.responseType deklarieren wir JS-seitig, um was es sich handeln soll, wenn xhr die Response entgegennimmt. Sollte ein Type-Cast erforderlich sein, können wir das aber auch später machen, siehe StringView (stringview.js). Warum also nicht gleich die Response als ArrayBuffer interpretieren, es kommt so oder so eine Binary.
MfG