如何确保我创建的文件下载是UTF-8? (而不是无 BOM 的 UTF-8)

2023-12-24

我制作了一个下载功能,将消息下载到 CSV 文件(代码如下)。 现在,当我在记事本或记事本++中打开它时,我看到:

é NY ø ╬ ║► ░ ê ö

(顺便说一句,这就是数据库中的内容)

现在,当我在 Ms-Excel 中打开它时,它显示:

� 纽约 � � � � � � –� � � �

当我在记事本++中打开它时,它说它是用“UTF8 without BOM”编码的。 当我将它(在记事本++中)编码为UTF-8时,一切顺利(也就是说,Excel也显示了正确的字符)

但是我如何确保从代码创建的文件是 UTF-8?

这是我的代码:

public ActionResult DownloadPersonalMessages()
{    
    StringBuilder myCsv = new StringBuilder();
    myCsv.Append(new DownloadService().GetPersonalMessages());

    this.Response.ContentType = "text/csv";
    Response.AddHeader("content-disposition", "attachment; filename=PersonalMessages.csv");
    Response.ContentEncoding = Encoding.UTF8;
    Response.Write(myCsv.ToString());
    Response.Flush();
    Response.HeaderEncoding = Encoding.UTF8;
    return Content("");
}

Edit:

我的函数现在返回一个ByteArray通过这个转换

UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(str);

我的下载现在是这样的:

Response.AddHeader("Content-Disposition", "attachment; filename=PersonalMessages.csv");
return File(new DownloadService().GetPersonalMessages(), "text/csv");

泽雷的回答对OP有帮助,但实际上并没有回答问题。这是正确的解决方案,来自这另一篇文章 https://stackoverflow.com/a/4414118/120955:

public ActionResult Download()
{
    var data = Encoding.UTF8.GetBytes("some data");
    var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
    return File(result, "application/csv", "foo.csv");
}

字节顺序标记(虽然技术上 UTF8 并不需要)会提示某些程序(例如 Excel >2007)您正在使用 UTF8。您必须通过手动包含它GetPreamble() method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确保我创建的文件下载是UTF-8? (而不是无 BOM 的 UTF-8) 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 有没有办法使用 ASP.NET 在用户离开页面时始终运行某些服务器端代码?

    我想知道当用户离开 ASP NET 中的页面时是否有任何方法可以始终运行一些服务器端代码 页面卸载事件不好 因为如果有人单击链接 则不会调用该事件 理想情况下 即使用户关闭浏览器 我也希望代码能够运行 我怀疑我所问的问题是不可能的 但问一下
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • 哪种算法是查找素数最快的算法?

    使用 C 找出素数最快的算法是什么 我已经使用了 sieve 算法 但我仍然希望它更快 非常快的实施阿特金筛 http en wikipedia org wiki Sieve of Atkin是丹 伯恩斯坦的primegen http cr
  • 在 Ruby on Rails 的模型中使用“current_user”

    我正在使用 Devise 它在助手中提供了 current user 方法 以便我可以在视图和控制器中使用 但是现在我想访问模型中的 current user 方法 这是我现在控制器中的内容 def create set email add
  • 为什么 `Array(0,1,2) == Array(0,1,2)` 没有返回预期结果?

    据我了解 Scala 的 定义两个对象的自然平等 我期望Array 0 1 2 Array 0 1 2 比较自然平等 例如 检查与另一个数组的相应元素比较时数组的所有元素是否返回 true 人们告诉我 Scala 的Array只是一个Jav
  • 为什么 C# 中的类型推断不适用于动态对象和泛型方法?

    我正在开发一个项目 该项目使用 C 泛型与动态关键字相结合来实现一个简单的 prototxt Caffe 文件解析器 该解析器基于 Google protocol buffer 项目的 proto2 语法 解析器使用非常简单的语法来读取 p
  • 将域模型映射到视图模型

    我从一个非常相似的点开始 领域实体 DTO 和视图模型 https stackoverflow com questions 5330172 domain entities dto and view models 建议使用 DTO 在域模型和
  • 如何使用相对路径访问不属于任何项目/程序集的图像[重复]

    这个问题已经存在了 我正在为 帝国时代 2 DE 制作一个模组 我的目标是从新 UI 的目录访问旧的纹理文件 文件结构如下 C Program Files x86 Steam steamapps common AoE2DE 是包含exe的游
  • 重构 JSON 数据

    目前我有一个 json 文件 其中存储了多个数据 如下所示 name Adelphi University supp Yes E WS ed u00a0 online 40 ea 12 1 mid No rd Rolling recs Ye
  • Doctrine 2.0 引导程序?

    好的 我已经在文件夹层次结构中找到了 Doctrine php 文件 如下所示 includes Setup php Doctrine Common DBAL ORM Symfony Doctrine php 我的 setup php 有以
  • 在课堂上使用碰撞列表

    我创建了一个类来创建矩形并将它们放入列表中 我不想让它们碰撞 所以我使用 collidelist 但它不起作用 矩形仍在碰撞 我还希望矩形在击中特定点时向下移动并更改 x 位置 我可以做到这一点 但我不确定它是否会阻止碰撞列表工作 请查看下
  • 我如何知道 lambda 表达式何时为空

    我需要以编程方式检查 lambda 表达式中的嵌套属性 函数结果是否为 null 问题在于 null 可能位于任何嵌套子属性中 例子 功能是 public static bool HasNull
  • Oracle DB 表中的第二高值 [重复]

    这个问题在这里已经有答案了 根据表格 USERS user name email balance 如何创建一个查询 返回最多的第二高用户余额高效的 way 我成功地通过查询获取了此记录 但不是通过有效的方式 SELECT FROM SELE
  • 每月重新加载 servlet 一次

    如何每月重新加载一次 servlet 我们得到了一些每月会改变一次的数据 这些数据是给servlet的 但是我们不需要将这些数据保存到DB中 而是希望将其做成一个每月更换一次的配置文件 怎么办我做这个 我知道servlet的生命周期策略是由
  • 如何使用 SQLAlchemy + postgreSQL 减少连接数?

    我正在开发heroku使用他们的Postgres开发计划的附加组件 其连接限制为20 我是新来的python这可能是微不足道的 但我发现很难在不导致OperationalError OperationalError FATAL too ma
  • Chart.js 无法创建图表:无法从给定项目获取上下文

    我从未进入过节点 所以我很确定我在这里做了一些严重错误的事情 因为我根本无法通过谷歌搜索找到任何信息 我有一个 django 网站 我想要一个 JS 图表库 我选择了 Chart js 我安装并喜欢这些文档 但之后我不确定该怎么做 所以我尝
  • 监视同步 XMLHttpRequest 调用的进度

    在客户端 我有一个文件放置区 HTML5 文件 API 用户可以在其中放置应上传到服务器的多个文件 对于每个文件 都会创建一个新的 XMLHttpRequest 对象 并将文件异步发送到服务器 我正在通过以下方式监控进度progressxh
  • 将值传递给 Javascript 时出现引号问题

    我正在使用像 myPage td a href Edit a td where row name 其值中有引号 它坏了 我如何从 php 端和 js 端解决这个问题 row name 是来自数据库的值 它的价值就像pradeep s and
  • 如何使用 Leaflet API 更改地图的位置中心?

    我的地图 Mapbox 占据了网站的整个背景 因此中心位于网站的中间 但用户的地图焦点位于右侧 因为我的内容与左侧的地图重叠 当传单抓取位置时 它是从地图的中心开始的 但是如果我可以将其设置为从网站右三分之一的中心抓取位置 这样用户就不会居
  • 使用 CUDA __shfl_down 函数查找数组及其索引中的最小值

    我正在编写一个函数 它将找到最小值以及使用 CUDA 找到一维数组的值的索引 我首先修改用于查找一维数组中的值之和的简化代码 该代码对于求和函数工作得很好 但我无法让它工作来找到最小值 我在消息中附上了代码 如果有cuda高手请指出我犯的错
  • C# 文件下载已损坏

    我在 Web API 项目的实用程序中有一些 C 代码的上传部分工作正常 我已验证到达服务器的文件与上传的文件是否匹配 但是 下载过程中发生了一些事情 导致客户端将文件视为已损坏 当我进行比较时 我可以看到出现了问题 不幸的是 我不知道我做
  • 如何确保我创建的文件下载是UTF-8? (而不是无 BOM 的 UTF-8)

    我制作了一个下载功能 将消息下载到 CSV 文件 代码如下 现在 当我在记事本或记事本 中打开它时 我看到 NY 顺便说一句 这就是数据库中的内容 现在 当我在 Ms Excel 中打开它时 它显示 纽约 当我在记事本 中打开它时 它说它是