角度下载文本作为文件,在记事本中不显示换行符

时间:2019-04-29 15:49:22

标签: javascript angular utf-8 utf-16 utf

我正在使用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中使用记事本打开下载的文件时,不知何故它无法检测字符串中的换行符。 但是,当我使用记事本++打开文本时,该文本将正确呈现。

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

仅供参考:我已经使用记事本打开了文件,然后单击另存为,它的默认选项为UTF-8,表示文件已正确以UTF-8格式保存。

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

1 个答案:

答案 0 :(得分:1)

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

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

为了让您在记事本中看到换行符,您将不得不用javascript替换您身边的换行符(用\ r \ n替换\ n或\ r)。