servicestack,Csv,Utf 8,servicestack" /> servicestack,Csv,Utf 8,servicestack" />

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

下载CSV文件(UTF 8)编码ServiceStack,csv,utf-8,servicestack,Csv,Utf 8,servicestack,我是ServiceStack的新手。它有提供数据csv文件的功能,但我需要下载UTF8格式,因为我得到一些特殊字符。我尝试过这个配置设置 SetConfig(new HostConfig { AppendUtf8CharsetOnContentTypes = new HashSet<string> { MimeTypes.Csv } }); SetConfig(新主机配置) { AppendUtf8CharsetOnCont

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

SetConfig(new HostConfig
        {
            AppendUtf8CharsetOnContentTypes = new HashSet<string> { MimeTypes.Csv } 
        });
SetConfig(新主机配置)
{
AppendUtf8CharsetOnContentTypes=新哈希集{MimeTypes.Csv}
});

但是没有运气。。请说明我做错了什么。

ServiceStack文本序列化程序已默认序列化为UTF8。下面的配置仅附加UTF8后缀,因此返回的完整内容类型为
text/csv;字符集=utf-8

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

此更改可从现在的v4.0.37+获得。

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

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

默认情况下,它使用的是
CsvSerializer.useconding=PclExport.Instance.GetUTF8Encoding(false);//无BOM

谢谢您的回复。我检查了在Notepad++中下载的文件,当我检查编码时,它显示了没有BOM的UTF-8。当我将其修改为UTF-8时,特殊字符就消失了。请让我知道我可以更改哪个设置,这样我就可以只获得UTF-8编码的文件。听起来好像是UTF-8,没有BOM/字节顺序标记。BOM是可选的-。您可能必须自定义序列化程序才能在流中发送BOM序列。@Raulnoheagooddy是的,您是对的,但我们可以在客户端添加BOM字符,如下面链接中所述
CsvSerializer.UseEncoding = PclExport.Instance.GetUTF8Encoding(true);