Javascript 在Excel中打开UTF-8 CSV文件而不强制用户设置编码

Javascript 在Excel中打开UTF-8 CSV文件而不强制用户设置编码,javascript,excel,csv,utf-8,utf-16,Javascript,Excel,Csv,Utf 8,Utf 16,我有一个用Javascript生成的CSV文件。我将编码设置为utf-8,在可供下载之前添加数据并对输出进行URI编码,如下所示: const csvContent=数据:text/csv;字符集=utf-8,${csvData} const encodedUri=encodeURI(csvContent) 在将UTF-8编码强制为标准(.e.g LibreOffice)的应用程序中打开文件时,以非ASCII文本、法语和阿拉伯语为例,文件可以正常打开。但是,当尝试在Excel中打开文件时(据我所

我有一个用Javascript生成的CSV文件。我将编码设置为utf-8,在可供下载之前添加数据并对输出进行URI编码,如下所示:

const csvContent=
数据:text/csv;字符集=utf-8,${csvData}

const encodedUri=encodeURI(csvContent)

在将UTF-8编码强制为标准(.e.g LibreOffice)的应用程序中打开文件时,以非ASCII文本、法语和阿拉伯语为例,文件可以正常打开。但是,当尝试在Excel中打开文件时(据我所知,Excel默认使用windows-1252),可以理解输出显示垃圾文本


我的问题是,;是否有必要强制Excel以UTF-8格式打开文件,而无需用户手动更改编码?我无法期望用户这样做。

您可以在文件开头包含UTF-8 BOM(0xEF、0xBB、0xBF)。这将使微软软件认识到它是UTF-8


请参阅:

您可以在文件开头包含UTF-8 BOM(0xEF、0xBB、0xBF)。这将使微软软件认识到它是UTF-8


请参阅:

如果您不告诉Excel,Excel如何知道文本文件使用哪种编码?LibreOffice也一样。事实证明,在这种情况下,一个人的猜测比另一个人的更好。(他们还必须猜测或询问整套CSV规范选项。)另一种方法是,如果不能生成xlsx,则生成SpreadsheetML。它比OpenXML简单得多,用户无需更改编码。如果他们使用Excel的文本导入向导(Data»From Text),他们可以让Excel询问所有CSV问题,包括文件编码。如果您不告诉Excel,Excel如何知道文本文件使用哪种编码?LibreOffice也一样。事实证明,在这种情况下,一个人的猜测比另一个人的更好。(他们还必须猜测或询问整套CSV规范选项。)另一种方法是,如果不能生成xlsx,则生成SpreadsheetML。它比OpenXML简单得多,用户无需更改编码。如果他们使用Excel的文本导入向导(Data»From Text),他们可以让Excel询问所有CSV问题,包括文件编码。如何包括这些问题?有什么例子吗?文件开头只有三个字节。我不知道如何在Javascript中实现,但基本上
printf(“\xef\xbb\xbf”)
您也可以添加unicode版本的标记<代码>\uFEFF如何包含它?有什么例子吗?文件开头只有三个字节。我不知道如何在Javascript中实现,但基本上
printf(“\xef\xbb\xbf”)
您也可以添加unicode版本的标记<代码>\uFEFF