下载 CSV 文件 (UTF 8) 编码 ServiceStack

Download CSV file (UTF 8) encoding ServiceStack

我是 ServiceStack 的新手。它具有为数据提供 csv 文件的功能,但我需要以 UTF8 格式下载它,因为我得到了一些特殊字符。我试过这个配置设置。

SetConfig(new HostConfig
        {
            AppendUtf8CharsetOnContentTypes = new HashSet<string> { MimeTypes.Csv } 
        });

但运气不好..请指出我做错了什么。

ServiceStack 文本序列化器默认已经序列化为 UTF8。下面的配置只附加了 UTF8 后缀,所以返回的完整 Content-Type 是 text/csv; charset=utf-8:

SetConfig(new HostConfig {
    AppendUtf8CharsetOnContentTypes = new HashSet<string> { MimeTypes.Csv } 
});

它不会改变序列化为 UTF-8 的内容。

我进行了更改,允许您修改用于 ServiceStack.Text in this commit.

中不同文本序列化程序的 UTF8Encoding

这将允许您指定为 CSV 序列化器发出 UT8 BOM:

CsvSerializer.UTF8Encoding = UTF8Encoding(true);

此更改适用于 v4.0.37+,现在是 available on MyGet

对于 ServiceStack 版本 > 5.x.x 你必须像这样更改你的代码

CsvSerializer.UseEncoding = PclExport.Instance.GetUTF8Encoding(true);

默认使用CsvSerializer.UseEncoding = PclExport.Instance.GetUTF8Encoding(false); // without BOM