如何在 C# 中创建 UTF8 文件

发布于 2024-09-08 11:02:58 字数 598 浏览 2 评论 0原文

根据问题,如何创建还包含字节顺序标记的文件?

显示某些字符时遇到一些问题,因为 csv 查看器在没有 BOM 的情况下无法正确显示字符。

感谢任何帮助。

编辑以包含代码:

string attachment = string.Format("attachment; filename=results_{0}_to _{1}.csv", startDate.ToString("MM_yy_yyyy"), endDate.ToString("MM_yy_yyyy"));
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "text/csv";
HttpContext.Current.Response.AddHeader("Pragma", "public");

string content = GetTextFromDB();

HttpContext.Current.Response.Write(content);
HttpContext.Current.Response.End();

As per question how to i create a a file that also includes the Byte Order Mark?

Having some trouble displaying some chars because the csv viewer cannot display the chars correctly without the BOM.

Appreciate any help.

EDIT To Include code:

string attachment = string.Format("attachment; filename=results_{0}_to _{1}.csv", startDate.ToString("MM_yy_yyyy"), endDate.ToString("MM_yy_yyyy"));
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "text/csv";
HttpContext.Current.Response.AddHeader("Pragma", "public");

string content = GetTextFromDB();

HttpContext.Current.Response.Write(content);
HttpContext.Current.Response.End();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉宸 2024-09-15 11:02:58

对于使用 Encoding 的任何内置代码(例如 StreamWriter),这应该自动完成 - 只需确保您传入的编码器配置为包含 bom(默认 Encoding.UTF8 包含 bom)。

如果您正在处理自己的Encoding -> Stream 逻辑,然后您需要调用 .GetPreamble() 并在流的开头写入这些字节。

默认的 Encoding.UTF8 包含前导码;但你可以在构造函数中显式地执行此操作:new UTF8Encoding(true)

This should be done automatically for any of the inbuilt code using an Encoding, such as StreamWriter - just make sure that the encoder you pass in is configured to include a bom (the default Encoding.UTF8 includes the bom).

If you are handling your own Encoding -> Stream logic, then you need to call .GetPreamble() and write those bytes at the start of the stream.

The default Encoding.UTF8 includes the preamble; but you can do it explicitly in the ctor: new UTF8Encoding(true)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文