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

Angular download text as file, does not show new line characters in notepad

我正在使用 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 格式正确保存。

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

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

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

为了让您在记事本中看到换行符,您必须将您这一边的换行符替换为 javascript(将 \n 或 \r 替换为 \r\n)。