HttpListenerRequest编码忽略定义的ContentType字符集

时间:2016-04-28 09:17:31

标签: c# encoding utf-8 character-encoding

我在c#app中运行HttpListener,它收到HTTP GET请求,其中包含以下定义的

Content-Type: text/plain;charset=utf-8

根据ContentEncoding property的MSDN文档,描述如下:

  

Encoding对象可用于将字节序列转换为字符集(代码页),将字符转换为字节序列。 此属性使用Content-Type标头中的charset值来确定编码。如果该信息不可用,则此属性将返回Encoding.Default。

当我查看请求的Content-Encoding属性时,它仍然返回默认的ISO而不是定义的UTF-8编码。

我是否遗漏了某些内容,或者这个属性是否仅仅是MS网站的错误信息?

1 个答案:

答案 0 :(得分:0)

看来如果你没有在你的请求中设置Content-Lenght,那么HttpListener将绕过Content-Type的charset,导致我在问题中描述的问题。解决方案是将Content-Lenght设置为至少1(在PostMan中这个标题是受限制的,因此在那里解决方法是在正文中添加一个空格。我不知道还是可以解决获取请求的问题)。