gpt4 book ai didi

javascript - 使用javascript生成和下载带有表情符号的utf8文件

转载 作者:行者123 更新时间:2023-11-29 20:54:12 24 4
gpt4 key购买 nike

我在生成和下载包含表情符号的 UTF8 文本文件时遇到问题。问题是,当我下载包含表情符号的文件时,生成的文件未以 UTF8 编码,并且表情符号未正确显示。

我用过 this solution生成并下载我需要的文件。这是我使用的代码:

function download(filename, text) {
let element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}

所以,如果我这样使用它:

downloadFile('withoutEmoji.txt','This is a test without emoji');

它下载一个 UTF8 格式的文件。

但是,当我这样使用它时:

downloadFile('withEmoji.txt','This is a test with emoji 😀');

我下载的文件没有正确显示表情符号,文件的编码不再是 UTF8。

如果我将“withEmoji.txt”文件转换为 UTF8(例如使用 Notepad++ ),表情符号将在文件中正确显示。

如何强制文件或文本为 UTF8?或者有没有办法在生成文件之前转换表情符号?我需要该文件包含表情符号,并采用 UTF8 格式。

您可以在 this fiddle 中看到此行为.

编辑

Notepad++ 识别带有 ANSI 编码的“withEmoji.txt”文件。 Vanilla 记事本识别具有“UTF8”编码的文件。使用this service该文件被识别为“文件类型:ASCII 文本,没有行终止符”。

最佳答案

文件只是存储在内存和/或磁盘上的字节序列。编码是将这些字节序列解释为字符序列或字符串的方式。您不能“强制”文本编辑器以特定方式解释字节序列,只是碰巧使用表情符号会导致某些编辑器错误预测文件编码并默认使用错误的编码打开。

文本文件没有任何指示其编码的元数据或 header 格式,因此对于此行为您无能为力。

正如评论中所建议的,BOM 可能用于暗示 UTF-8 编码,但根据 The Unicode Standard, p. 36 :

Use of a BOM is neither required nor recommended for UTF-8, but may be encountered in contexts where UTF-8 data is converted from other encoding forms that use a BOM or where the BOM is used as a UTF-8 signature.

关于javascript - 使用javascript生成和下载带有表情符号的utf8文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50185444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com