【发布时间】:2012-12-23 12:20:08
【问题描述】:
我有一个 ASP.NET MVC 应用程序。在我看来,我上传了一个文本文件并使用带有此签名的控制器方法对其进行处理
[HttpPost]
public ActionResult FromCSV(HttpPostedFileBase file, string platform)
我从上传的文件中得到一个流file.InputStream 并使用标准 StreamReader 读取它
using (var sr = new StreamReader(file.InputStream))
{
...
}
问题是,这只适用于 UTF 文本文件。当我在 Windows-1250 中有一个文本文件时,字符会变得混乱。当我明确指定编码时,我可以使用 Windows-1250 编码的文本文件
using (var sr = new StreamReader(file.InputStream, Encoding.GetEncoding(1250)))
{
...
}
我的问题是,我需要同时支持 UTF 和 Windows-1250 编码文件,所以我需要一种方法来检测提交文件的编码。
【问题讨论】:
-
有没有人知道这个文件的任何部分内容? IE。如果您知道某个特定字符串可能存在,您可以读取它并查看是否可以找到它,如果找不到,请尝试使用不同的编码。
-
@AndrasZoltan 我只知道这些文件是 CSV 文件,要么在 Excel (Windows-1250) 中创建,要么从 Google Docs (UTF) 导出。我不知道这些文件的内容。
-
@mathieu 在这种特定情况下(UTF-8 或 1250)答案不适用
-
如果您可以使用 BOM,请使用它,否则请参阅 stackoverflow.com/q/90838/266919
标签: c# asp.net-mvc encoding