BinaryReader / CSVReader将特殊字符渲染为{

时间:2015-10-15 14:28:57

标签: c# asp.net-mvc csv encoding

我从MVC应用程序开始,在那里我通过视图上传CSV文件。此CSV文件包含特殊字符。对于此示例,我有一个只有一个字段的CSV文件。 Image。如您所见,它包含特殊字符(变音符号)并在CSV中保存正常。

此文件通过MVC上传,并作为HttpPostedFileBase类型file

的参数传递

使用BinaryReader及其'进行处理。读取字节并将其保存到数据库中。

byte[] fileData;
using (var binaryReader = new BinaryReader(file.InputStream, Encoding.UTF8))
{
    fileData = binaryReader.ReadBytes(file.ContentLength);
}

对于此示例,最终结果是以下字符串:

0x52FC676279

稍后,当我希望从CSV文件中重新创建原始字符串时,我会通过CsvReader处理所提到的字符串:

var configuration = new CsvConfiguration { Encoding = Encoding.UTF8 };

using (var stream = new StreamReader(new MemoryStream(fileBytes)))
            {
                using (var csvReader = new CsvReader(stream, configuration))
                {
                    while (csvReader.Read())
                    {
                        // Do read stuff
                    }
                 }
             }

此时我可以检查csvReader > CurrentRecord以查看已解码的字符串。我的问题是特殊字符被解码为�而不是它们的实际值。因此,原始CSV文件中的Rügby值为R�gby

我假设这是要使用哪种编码的问题。我已将上面代码中的两个UTF-8设置更改为各种编码无效。

0 个答案:

没有答案