我正在尝试使用javascript在客户端生成一个CSV文件。我使用了the answer on this stackoverflow question。我在内容中使用了unicode字符(在我的例子中是希伯来语字符)。
文件生成成功,但是当我在Excel中打开文件时-所有的Unicode字符都显示为有趣的字符。ASCII字符(英语和数字)显示得很好。
奇怪的是,如果我在记事本中打开文件,unicode字符显示良好,所以我猜这与Excel和我保存文件的方式有关。
有什么想法吗?
我正在尝试使用javascript在客户端生成一个CSV文件。我使用了the answer on this stackoverflow question。我在内容中使用了unicode字符(在我的例子中是希伯来语字符)。
文件生成成功,但是当我在Excel中打开文件时-所有的Unicode字符都显示为有趣的字符。ASCII字符(英语和数字)显示得很好。
奇怪的是,如果我在记事本中打开文件,unicode字符显示良好,所以我猜这与Excel和我保存文件的方式有关。
有什么想法吗?
3条答案
按热度按时间pu82cl6c1#
在科尔的注解和this question之后,解决我的问题的方法是在文件的开头添加BOM前缀(
\uFEFF
)。以下是工作代码:
hzbexzde2#
建议的解决方案并不适用于所有的浏览器,但我找到了一种方法,让它在所有的浏览器(Chrome,Firefox,IE11,甚至边缘,...不知道IE9-10,因为我没有访问它们了)。
我必须使用外部库来编码encoding.js,它与unicode配合得非常好(我可以在Excel中的CSV导出中看到我的独角兽表情符号)。
下面是代码
就是这样,它在
IE / Edge / Chrome / Firefox
中工作nnsrf1az3#
在Node/Express服务器上,我尝试了Shay的答案,但我得到了一个错误,因为我的头中有无效字符。相反,我在回复正文的开头添加了
\uFEFF
,它起作用了。