HttpResponse中的StatusDescription编码

时间:2011-05-07 16:33:07

标签: c# asp.net encoding httpresponse

我正在使用C#并在发生异常时向HttpResponse StatusDescription写入错误消息。内部我使用另一个服务,不幸的是返回俄语错误描述。这个俄语错误消息我必须在HttpResponse StatusDescrition中返回。我使用UTF-8编码并以这种方式编写:

var message = exception.Message.Substring(0, Math.Min(exception.Message.Length, 512));
var encodedBytes = Encoding.UTF8.GetBytes(message);

response.StatusDescription = Encoding.UTF8.GetString(encodedBytes);

但这没有用。在Fiddler中,看起来有点不对劲:

  

HTTP / 1.1 500无法更新预订。错误信息:

我该怎么做才能启用俄语符号?

1 个答案:

答案 0 :(得分:3)

不,您没有使用UTF-8编码。您在使用它之前使用它对字符串进行编码和解码,因此该步骤毫无意义。您的代码与:

相同
response.StatusDescription =
  exception.Message.Substring(0, Math.Min(exception.Message.Length, 512));

无论如何,您不能对HTTP标头使用UTF-8编码,它们只是纯文本。将错误消息放在响应正文中,因为您可以为其指定编码。