Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 从查询字符串中获取非英语字符_Asp.net - Fatal编程技术网

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

Asp.net 从查询字符串中获取非英语字符,asp.net,Asp.net,我的问题串中有这个-sug_zehut=ז (ז是希伯来字母) 虽然我很清楚这是一种不好的做法,但我必须在查询字符串(不是我的代码)中这样接收它 当我将它写入一个隐藏的时,我得到sug_zehut=%EF%BF%BD作为querystring的一部分,当我尝试将它放入字符串并将其放入一个隐藏的时,我得到� (我发现那两个是一样的) 无论如何,问题是-我如何得到变量的值 (我正在使用.net版本4) 谢谢。%EF%BF%BD是的代码� 桑博尔。这意味着您的服务器不知道这个字符,因为您在一个编码中发

我的问题串中有这个-sug_zehut=ז
(ז是希伯来字母)

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

当我将它写入一个隐藏的时,我得到sug_zehut=%EF%BF%BD作为querystring的一部分,当我尝试将它放入字符串并将其放入一个隐藏的时,我得到� (我发现那两个是一样的)

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

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


谢谢。

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

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

  • 在web.config中
  • 在页面中
  • 如果直接设置符号(.cs, .cshtml、.aspx、.js、…)

  • 如果不起作用,请告诉我如何获取此url并在其上导航?

    这里有一个小函数,用于将您的字符转换为HTML编码版本(在本例中为ז;)。不幸的是,在大多数.net版本中,HtmlEncode都不能为您做到这一点

    private static string UnicodeConvertChar(char input)
    {
        if (input > 159)
        {
            return "&#" + ((int)input).ToString() + ";";
        }
        else
        {
            return input.ToString();
        }
    }
    
    您可以在将其设置到隐藏字段之前对其进行转换,然后当您将其取回时,只需使用HttpUtility.HtmlDecode读取即可

    这里有一个dotnetfiddle供您使用:

    这可能会帮助你:“当我把它写到一个隐藏的地方时”-你真的应该发布一些代码。您是否在JavaScript中的Unicode和UTF-8之间工作?有内置的方法来处理这个
    encodeURIComponent
    ,但它取决于从何处到何处。如果你想要一个答案,发布一段代码来重现这个问题。它看起来也像,因为OP谈论的是隐藏字段,我想浏览器也需要设置为UTF-8编码,对吗?