使用BOM保存CSV

3
我有一个ASP页面,可以创建CSV文件。但问题是,这个CSV文件被创建为UTF-8 WITHOUT BOM格式,当我打开它时,一些符号不能正确显示。我应该怎么改才能将其保存为UTF-8 WITH BOM格式?如果我在notepad++中手动转换为UTF-8 WITH BOM,就可以正常工作。
谢谢。
    Response.Clear
    Response.ContentType = "application/vnd.ms-excel; charset=UTF-8;"
    Response.AddHeader "Content-Disposition", "attachment; filename=goodsTransfer.csv"
    Response.Charset = "UTF-8"
    Response.Write "all my data"
    Response.end
2个回答

4

尝试:

Response.Write(ChrW(65279) & "all my data")

2
它可以工作。谢谢。但是这意味着什么?据我所知,这是BOM,表示这是UTF-16文件:(FEFF在十进制中为65279)来自维基百科: “对于UTF-16,可以将BOM(U+FEFF)放置在文件或字符流的第一个字符位置,以指示文件或流的所有16位代码单元的字节顺序。”但是我可以使用仅支持UTF-8的notepad++打开它。 你能给我解释一下吗?谢谢。 - Simon
如 https://dev59.com/O2Mm5IYBdhLWcg3wFL_s#17879474 中所述:字符 \ufeff 用于所有 UTF 编码。实际上,正如维基百科所述,该字符实际上被编码为 0xEFBBBF 在 UTF-8 中。 - walderich

0

UTF-8 的正确 BOM 是:

Response.Write(ChrW(&HeF) & ChrW(&Hbb) & ChrW(&HbF) & "all my data")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接