我正在使用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格式保存。
我应该使用其他任何编码格式吗?
答案 0 :(得分:1)
UTF格式没有问题。记事本具有将结束行视为CRLF(\ r \ n)的限制,这是Notepad ++所没有的限制。
端线特定于OS(某些需要CRLF,CR或LF)。这意味着您将无法通过更改UTF格式来修改从服务器获取的换行符。
为了让您在记事本中看到换行符,您将不得不用javascript替换您身边的换行符(用\ r \ n替换\ n或\ r)。