我有一个基于 c# 的应用程序。这是我的代码片段
private void ProcessRequest(IAsyncResult result)
{
HttpListenerContext context = httpListener.EndGetContext(result);
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
NameValueCollection queryString = getQueryStringFromRequest(request);
…….
}
我得到的回复只有英文。然而,有时我会得到其他语言的部分回复,比如冰岛语。然后我的应用程序无法相应地格式化字符串。例如在 queryString 我得到这样的东西:
{ ENTITY_NAME=Contact&OBJECT_NAME=Mr.+Hl%ufffd%ufffdar+Hl%ufffd%ufffdberg}
但是对象名称应该是Mr. Hlíðar Hlíðberg。
我知道这个问题是无法根据双字节字符解析它。我尝试了类似的东西:
if (queryString["OBJECT_NAME"] != null){
string s_unicode = queryString["OBJECT_NAME"];
System.Text.Encoding iso_8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");
System.Text.Encoding utf_8 = System.Text.Encoding.UTF8;
byte[] utfBytes = utf_8.GetBytes(s_unicode);
byte[] isoBytes = Encoding.Convert(utf_8, iso_8859_1, utfBytes);
string msg = iso_8859_1.GetString(isoBytes);
}
但我仍然得到像Hl??ar Hl??berg 先生这样的回应, 但它对我没有用。此外,我从不喜欢这种方法,因为它是特定的,并且需要硬编码,例如。在这种情况下的关键。
那么,我该怎么做。我可以通过配置文件或通用做些什么吗?