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

时间:2013-05-02 20:57:10

标签: c# encoding http-headers

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

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

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

服务器将其解释为:

se�or

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

如何编码此HTTP标头以保留扩展/特殊字符?

1 个答案:

答案 0 :(得分:2)

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

在客户端:

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

在服务器上:

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