我正在使用C#并将错误消息写入HttpResponse StatusDescription,以防发生异常。内部我使用另一个服务,不幸的是,它会返回俄语的错误描述。而这个俄语错误消息我必须在HttpResponse StatusDescription中返回。我使用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中,encoding似乎有问题:
HTTP/1.1 500无法更新保留。错误消息:��
我应该怎么做才能启用俄语符号?
2条答案
按热度按时间hyrbngr71#
不,你没有使用UTF-8编码。你在使用它之前使用它来编码和解码字符串,所以这一步是没有意义的。你的代码做的是一样的:
无论如何,你不能对HTTP头使用UTF-8编码,它们只是纯文本。把错误消息放在响应正文中,因为你可以为它指定一个编码。
vmjh9lq92#
实际上,有一种方法可以做到这一点:将其编码为URI字符串。
你必须在客户端用ECMAScript解码响应:
decodeURIComponent(r.statusText)