vue中关于使用iframe浏览txt格式文件报错问题

197 阅读1分钟

上传文件有不同格式,其中若是ppt、world、xlsx格式可以借助后端转换为pdf,使用iframe显示,若上传文件为txt格式,则会有方块字的显示问题,其原因是因为文件不是UTF-8编码,而是GBK编码,中文不支持。 代码解决:

else if (suffix == "txt") {
                fetch(baseUrl + row.filePath)
                  .then(response => response.text())
                  .then(text => {

                    // 转换编码,假设文件不是UTF-8编码,而是GBK编码
                    const convertedText = new TextEncoder().encode(text);
                    const blob = new Blob([convertedText], { type: 'charset=utf-8' });
                    const url = URL.createObjectURL(blob);
                    // 使用转换后的URL设置iframe的src属性
                    iframeUrl.value = url;
                  });
              }

将文件转为blob格式再设置文件类型转换即可显示成功