阿拉伯语QueryString问题(????中的值)

时间:2010-06-22 08:44:19

标签: asp.net internationalization query-string

我在查询字符串中发送一个阿拉伯语值,当在服务器上检索它时,该值是错误的并被引号(????)替换。 例如: http://server/mypage.aspx?qs=مرحبا Request.QueryString(“qs”)的值是?????

请注意,Response.Write('مرحبا')正确执行。

有关此查询字符串问题的任何想法吗?

感谢。

4 个答案:

答案 0 :(得分:2)

Just URL编码阿拉伯字符串,它应该可以正常工作。

编辑:您必须在将字符串放入查询字符串之前对字符串进行编码。

例如,如果你要对空格字符进行url编码,它将在你的查询字符串中显示为%20,如下所示:

http://foo.com/dosomething?param1=hello%20world

然后当你读取param1时,你对URL进行解码,然后你得到字符串“hello world”

您也可以对每个字符进行URL编码,但对于普通字符,这是毫无意义的。

答案 1 :(得分:1)

我有类似的问题并通过在我的web.config文件中添加以下行来解决它:

<globalization fileEncoding="windows-1256" 
    requestEncoding="windows-1256" responseEncoding="windows-1256"/>"

这是我的HTML页面的主要部分:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

答案 2 :(得分:1)

我在查询字符串中发送了一个阿拉伯文字

Arabic text in my query string

当我解除这个字符串时,它就是编码 enter image description here

HttpResponseMessage response; string stringContent = "{ 'request_key': 'ABCD1234', 'request_code': 'CODE', 'request_type':'ID_type' }"; using(var client = new HttpClient()) { client.BaseAddress = new Uri(SubscriptionUtility.GetConfiguration("BaseURI")); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(SubscriptionUtility.GetConfiguration("ContentType"))); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", SubscriptionUtility.GetConfiguration("BasicAuthentication")); response = await client.PostAsync(SubscriptionUtility.GetConfiguration("SubscriptionAPI"), stringContent, new JsonMediaTypeFormatter()); if(response.IsSuccessStatusCode) { var dataObjects = JsonConvert.DeserializeObject<List<TestClass>>(response.Content.ReadAsStringAsync().Result); //foreach(var d in dataObjects) { //} } }

之后

Server.UrlDecode
它又回到了阿拉伯语 enter image description here

  

所以只需使用 departmentName = Server.UrlDecode(departmentName);

希望这能帮到你

答案 3 :(得分:0)

非英语字符未经编码就无法传递,

因此您需要在重定向到目标页面之前对值进行编码,如下所示:

string text="مرحبا";
text=Server.UrlEncode(text);
string url="http://server/mypage.aspx?qs="+text;
Response.Redirect(url);