从查询字符串中获取非英语字符

时间:2014-11-11 18:07:29

标签: asp.net

我在我的查询字符中有这个 - sug_zehut =ז
(ז是希伯来文字母)

虽然我很清楚这是不好的做法,但我必须在查询字符串中接收它(不是我的代码..)

当我将它写入隐藏时,我将sug_zehut =%EF%BF%BD作为查询字符串的一部分,当我尝试将其放入字符串并将其置于隐藏状态时,我得到 (我发现here这两个是相同的)。

无论如何,问题是 - 如何获得我的变量的值??

(我正在使用.net版本4)

感谢。

2 个答案:

答案 0 :(得分:2)

%EF%BF%BD是�sumbol的代码。这意味着您的服务器不知道此字符,因为您在一个编码中发送了符号并尝试将其设置为UTF-8。

尝试在每个地方设置utf-8编码(至少用于测试问题):

  1. 在web.config中 http://msdn.microsoft.com/en-us/library/ydkak5b9(v=vs.71).aspx
  2. 在页面中 <meta charset="utf-8"> vs <meta http-equiv="Content-Type">
  3. 如果直接设置符号(.cs,则更改实际文件编码) .cshtml,.aspx,.js,...)
  4. 如果它不起作用,请告诉我你如何获得这个网址并导航它?

答案 1 :(得分:0)

这是一个将您的角色转换为HTML编码版本的小功能(&amp;#1494;在这种情况下)。不幸的是,在.net的大多数版本中,HtmlEncode都不会为你做这件事。

private static string UnicodeConvertChar(char input)
{
    if (input > 159)
    {
        return "&#" + ((int)input).ToString() + ";";
    }
    else
    {
        return input.ToString();
    }
}

您可以在隐藏字段中进行转换之前对其进行转换,然后当您将其恢复时,您可以使用HttpUtility.HtmlDecode简单地读取它。

这是一个dotnetfiddle,你可以玩它: https://dotnetfiddle.net/jbDY0V