oData 查询中如何处理特殊字符?

发布于 2024-10-03 18:58:06 字数 238 浏览 5 评论 0原文

怎么样? oData 中以下查询中处理的符号?

/vendordataservice.svc/vDataMapper_SourceMapVendor?&$filter=startswith(ParentName,'AT&T')&$top=7&$skip=0

我正在使用 EF3.5 和 SQL2008。当我将其发送到我的 oData 服务时,我没有收到任何数据。

How is the & symbol handled in the following query in oData?

/vendordataservice.svc/vDataMapper_SourceMapVendor?&$filter=startswith(ParentName,'AT&T')&$top=7&$skip=0

I'm using EF3.5 and SQL2008. When I send that to my oData service I get no data back.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你爱我像她 2024-10-10 18:58:06

不要使用“JavaScript String Replace() 方法”。它将替换第一次出现的特殊字符。如果过滤参数中出现两次相同的特殊字符,则过滤失败。所以使用正则表达式来替换字符。

function replaceSpecialCharacters(attribute) {
  // replace the single quotes
     attribute = attribute.replace(/'/g, "''");

     attribute = attribute.replace(/%/g, "%25");
     attribute = attribute.replace(/\+/g, "%2B");
     attribute = attribute.replace(/\//g, "%2F");
     attribute = attribute.replace(/\?/g, "%3F");

     attribute = attribute.replace(/#/g, "%23");
     attribute = attribute.replace(/&/g, "%26");
     return attribute;
}

另请注意,由于替换内容还包含 % ,因此应在开头替换 % 本身

Do not use the “JavaScript String replace() Method”. It will replace the first occurrence of the special characters. If you have 2 occurance of the same special characters in the filtering parameter, it will fail. So use the regular expression to replace the characters.

function replaceSpecialCharacters(attribute) {
  // replace the single quotes
     attribute = attribute.replace(/'/g, "''");

     attribute = attribute.replace(/%/g, "%25");
     attribute = attribute.replace(/\+/g, "%2B");
     attribute = attribute.replace(/\//g, "%2F");
     attribute = attribute.replace(/\?/g, "%3F");

     attribute = attribute.replace(/#/g, "%23");
     attribute = attribute.replace(/&/g, "%26");
     return attribute;
}

Also pay attention, since the replacements also contains % then % itself should be replaced at the beginning

凌乱心跳 2024-10-10 18:58:06

以下是通过 HTTP 发送到 SQL Server 之前应编码的字符列表:

http://msdn.microsoft.com/en-us/library/aa226544(SQL.80).aspx

是的, '&'符号就是其中之一。

Here is a list of characters that should be encoded prior to sending to SQL server over HTTP:

http://msdn.microsoft.com/en-us/library/aa226544(SQL.80).aspx

Yes, the '&' symbol is one of them.

乖乖公主 2024-10-10 18:58:06

如果过滤器参数被视为单个单词,您可以在参数前后附加单引号的 ASCII 值,如下所示%27AT&T%27

if the filter parameter is seen as a single word you can append ASCII value of single quote before and after the param like this%27AT&T%27

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文