我正在使用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无法更新预订。错误信息:
我该怎么做才能启用俄语符号?
答案 0 :(得分:3)
不,您没有使用UTF-8编码。您在使用它之前使用它对字符串进行编码和解码,因此该步骤毫无意义。您的代码与:
相同response.StatusDescription =
exception.Message.Substring(0, Math.Min(exception.Message.Length, 512));
无论如何,您不能对HTTP标头使用UTF-8编码,它们只是纯文本。将错误消息放在响应正文中,因为您可以为其指定编码。