Angular下载TXT文件在Windows记事本不显示换行问题求助
解决Windows记事本无法识别下载文本换行的问题
这个问题我之前也踩过坑!其实不是编码的锅,是Windows记事本对换行符的“专属要求”导致的😉
问题根源
Windows记事本默认只认**CRLF(\r\n,回车+换行)作为换行标记,而如果你的文本里用的是Unix/Linux风格的LF(\n)**换行,记事本就会把所有内容挤成一行显示。但Notepad++这类现代编辑器支持识别多种换行符,所以能正常显示。你已经加了UTF-8 BOM(%EF%BB%BF),记事本也能正确识别UTF-8编码,所以编码本身完全没问题,不用更换。
修复方案
只需要在生成下载链接前,把文本里的所有LF换行替换成CRLF就行,修改你的函数如下:
function download_text_as_file(data: string) { // 将LF换行替换为Windows记事本兼容的CRLF const formattedData = data.replace(/\n/g, '\r\n'); var element = document.createElement('a'); element.style.display = 'none'; element.setAttribute('href', "data:text/plain;charset=UTF-8,%EF%BB%BF" + encodeURIComponent(formattedData)); element.setAttribute('download', `file_name.txt`); document.body.appendChild(element); element.click(); document.body.removeChild(element); }
这样处理后,下载的txt文件用Windows记事本打开就能正常显示换行了。
内容的提问来源于stack exchange,提问作者Ishaan Shringi
相关产品推荐
相关产品推荐

