try {
const res = await fetch(baseUrl());
await assertResOK(res);
- const text = await res.text();
- $editor.value = text;
+ const encoding = getEncoding(res.headers.get("content-type"));
+ if (encoding === "utf-8") {
+ $editor.value = await res.text();
+ } else {
+ const bytes = await res.arrayBuffer();
+ const dataView = new DataView(bytes)
+ const decoder = new TextDecoder(encoding)
+ $editor.value = decoder.decode(dataView);
+ }
} catch (err) {
alert(`Failed get file, ${err.message}`);
}
throw new Error(await res.text())
}
}
+
+function getEncoding(contentType) {
+ const charset = contentType?.split(";")[1];
+ if (/charset/i.test(charset)) {
+ let encoding = charset.split("=")[1];
+ if (encoding) {
+ return encoding.toLowerCase()
+ }
+ }
+ return 'utf-8'
+}
\ No newline at end of file