【问题标题】:Encoding and Decoding Strings From Javascript to C# - Not Working从 Javascript 到 C# 的编码和解码字符串 - 不工作
【发布时间】:2012-04-19 13:04:37
【问题描述】:

我遇到了一些字符串编码问题,可能是 iis 问题,或者是我忽略的问题。基本上,随机地,当用户提交更改时,文本与 %20 一起存储,就好像它完全忽略了我的解码一样。在 localhost、live 或任何浏览器上都不会发生在我身上;它从来都不是一致的,甚至不知道如何测试出了什么问题。

只是粘贴基本部分:

文本控件接受用户输入

<asp:TextBox TextMode="MultiLine" runat="server" txtActionUpdate"></asp:TextBox>

然后

Javascript“转义”并传递给 ajax 方法以发送到代码隐藏

var tAction = escape(document.getElementById("txtActionUpdate").value);

然后

在网络方法中,我使用以下内容进行解码:

Test = Microsoft.JScript.GlobalObject.unescape(tAction);

(以前是:Test = HttpUtility.UrlDecode(tAction);

但以上两个 decode 选项都可以完美地工作(对我来说?)。但是随机地,当用户在处理它时,它实际上会“跳过”解码步骤,并以其编码格式(即:this%20is%20a%20Test%20string)将其写入数据库,就好像我从来没有代码。

我们有多个客户(不同的 URL),但只有一个代码库。在发布期间,我先删除然后发布,清除应用程序池,让用户清除浏览器缓存(实际上讨厌后者),但这似乎永远不会保持一致。我感觉这更像是一些“缓存”或“服务器设置”问题,而不是代码问题……让我看起来很糟糕! ;) 哈哈。有人有预感吗?

【问题讨论】:

  • 如果没有看到更多代码,可能无法提供帮助。

标签: c# javascript ajax decode encode


【解决方案1】:

我不会为此使用escape(或其他任何东西)。我会使用encodeURIComponent,然后使用HttpUtility.UrlDecode 解码(我认为;显然,MSDN 现在已经关闭了)。

【讨论】:

  • 我唯一改变的部分是解码方法背后的代码。总是离开“逃生”,因为我认为它很好。看到不少论坛提到要避免“逃避”,因为接收服务器可能不“理解”某些字符。我要试试你的建议;我以前见过它,只是一直认为它更多用于 URL,而不是纯文本(包括 / \ * + 等)。耶! ;)
【解决方案2】:

我的猜测是,在客户端的某个地方,数据被编码了两次,然后导致您看到的效果。

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 2014-12-31
    • 1970-01-01
    • 2013-06-15
    • 2017-11-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多