【问题标题】:Angular download text as file, does not show new line characters in notepad角度下载文本作为文件,在记事本中不显示换行符
【发布时间】:2019-09-18 06:44:27
【问题描述】:

我正在使用 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】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 2015-05-24
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多