使用WebClient.Headers.Add()编码报头值

本文关键字:编码 报头 WebClient Headers Add 使用 | 更新日期: 2023-09-27 18:11:48

我使用HTTP头发送包含Unicode字符(如ñ)到自定义HTTP服务器的字符串。

当我添加字符串作为标题时:

webClient.Headers.Add("Custom-Data", "señor");

被服务器解释为:

se�or

显然我需要对值进行不同的编码,但我不确定使用哪种编码。

我应该如何编码这个HTTP头以保留扩展/特殊字符?

  • porneL对相关问题的回答令人困惑。
  • 未回复,相关:c# WebClient非英文请求头值编码

使用WebClient.Headers.Add()编码报头值

正如@Jordan建议的那样,将字符串表示为base64(使用UTF8编码)效果很好:

客户端:

webClient.Headers.Add("Custom-Data",
    Convert.ToBase64String(Encoding.UTF8.GetBytes("señor")));

服务器端:

string customData = Encoding.UTF8.GetString(Convert.FromBase64String(customHeader.Value));