|
|
@@ -18,7 +18,7 @@
|
|
|
* along with SingleFile. If not, see <http://www.gnu.org/licenses/>.
|
|
|
*/
|
|
|
|
|
|
-/* global SingleFileCore, btoa, DOMParser, getComputedStyle, FileReader, window, fetch */
|
|
|
+/* global SingleFileCore, btoa, DOMParser, getComputedStyle, TextDecoder, window, fetch */
|
|
|
|
|
|
this.SingleFile = (() => {
|
|
|
|
|
|
@@ -55,13 +55,13 @@ this.SingleFile = (() => {
|
|
|
} else {
|
|
|
const matchCharset = contentType.match(/\s*;\s*charset\s*=\s*(.*)(;|$)/i);
|
|
|
if (matchCharset && matchCharset[1]) {
|
|
|
- const fileReader = new FileReader();
|
|
|
- const blob = await resourceContent.blob();
|
|
|
- fileReader.readAsText(blob, matchCharset[1]);
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
- fileReader.onload = event => resolve(event.target.result);
|
|
|
- fileReader.onerror = reject;
|
|
|
- });
|
|
|
+ const charSet = matchCharset[1].toLowerCase();
|
|
|
+ if (charSet != "utf-8") {
|
|
|
+ const arrayBuffer = await resourceContent.arrayBuffer();
|
|
|
+ return (new TextDecoder(charSet)).decode(arrayBuffer);
|
|
|
+ } else {
|
|
|
+ return resourceContent.text();
|
|
|
+ }
|
|
|
} else {
|
|
|
return resourceContent.text();
|
|
|
}
|