function showTxtPreview(url, fileName) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function() {
if (xhr.status === 200) {
var buffer = xhr.response;
var text = '';
// 先尝试 UTF-8
var decoder = new TextDecoder('utf-8', { fatal: false });
text = decoder.decode(buffer);
// 若包含替换字符 �,则改用 GBK 重新解码
if (text.indexOf('\uFFFD') !== -1) {
decoder = new TextDecoder('gbk');
text = decoder.decode(buffer);
}
_createTxtOverlay(text, fileName || '');
} else {
showToast('Failed to read file');
}
};
xhr.onerror = function() {
showToast('Failed to read file');
};
xhr.send();
}