Angular下载文本为文件,不会在记事本中显示换行符

问题描述 投票:0回答:1

我正在使用我的Angular应用程序中的javascript代码将文本数据下载为.txt文件。

以下是我的代码:

function download_text_as_file(data: string) {
    var element = document.createElement('a')
    element.style.display = 'none'
    element.setAttribute('href', "data:text/plain;charset=UTF-8,%EF%BB%BF" + encodeURIComponent(data))
    element.setAttribute('download', `file_name.txt`)
    document.body.appendChild(element)
    element.click()
    document.body.removeChild(element)
}

但是当我在Windows中使用记事本打开下载的文件时,它不会检测到字符串中的新行字符。但是,当我使用Notepad ++打开文本时,文本会正确呈现。

我认为它可能是文件编码问题,但文件以UTF-8格式保存,记事本应该没有问题解码。

仅供参考:我使用记事本打开文件并单击“另存为”,它将默认选项设置为UTF-8,表示文件正在以UTF-8格式正确保存。

我应该使用任何其他编码格式吗?

javascript angular utf-8 utf-16 utf
1个回答
1
投票

UTF格式没有任何问题。记事本有限制将结束行视为CRLF(\ r \ n),这是Notepad ++没有的限制。

结束行特定于OS(某些需要CRLF,CR或LF)。这意味着,您将无法通过更改UTF格式来修改从服务器获取的换行符。

为了让你在记事本中看到换行符,你必须用javascript替换你身边的换行符(用\ r \ n替换\ n或\ r \ n)。

© www.soinside.com 2019 - 2024. All rights reserved.