簡體   English   中英

oData 查詢中如何處理特殊字符?

[英]How are special characters handled in an oData query?

在 oData 中的以下查詢中如何處理 & 符號?

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

我正在使用 EF3.5 和 SQL2008。 當我將它發送到我的 oData 服務時,我沒有收到任何數據。

不要使用“JavaScript String replace() 方法”。 它將替換第一次出現的特殊字符。 如果過濾參數中有 2 個相同的特殊字符出現,它將失敗。 所以使用正則表達式來替換字符。

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;
}

還要注意,由於替換也包含%那么%本身應該在開頭替換

以下是通過 HTTP 發送到 SQL Server 之前應編碼的字符列表:

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

是的,“&”符號就是其中之一。

如果過濾器參數被視為一個單詞,您可以在參數之前和之后附加單引號的 ASCII 值,如下所示%27AT&T%27

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM