fetch APIのResponse:text()メソッドはUTF-8にのみ対応しています
レスポンスは常に UTF-8 としてデコードされます
MDN Response: text() メソッド
潔いですね。しかし、入力データとしてShift_JISを扱わねばならない場合もあるかと思います(先日遭遇しました)。そのような場合はarrayBufferを経由し、
fetch("sampleSjisText.txt")
.then((response)=>response.arrayBuffer())
.then((arrayBuffer)=>{
const textDecoder = new TextDecoder('shift-jis');
const text = textDecoder.decode(arrayBuffer);
console.log( text);
});
のようにして解釈できます
また、gzipデータが入力として与えられた場合は、
fetch("sampleGzipCompressedText.txt.gz")
.then((response)=>{
const ds = new DecompressionStream('gzip');
const decompressedStream = response.body.pipeThrough(ds);
return new Response(decompressedStream).text();
})
.then((text)=>{
console.log(text);
});
のようにして展開できます