Javascript sharepoint 2010中与ListData.svc一起使用的列表名规则

Javascript sharepoint 2010中与ListData.svc一起使用的列表名规则,javascript,rest,sharepoint-2010,csom,Javascript,Rest,Sharepoint 2010,Csom,我想通过RESTAPI获取sharepoint 2010列表的内容。但我的列表的名称是非常复杂的(它们包含各种特殊字符,如:“,”,“?”,“-”,“/”,“(”等),我无法更改它们 示例:1)索赔提醒,GT 2) z-Det-andt 3) z-Pens-afregng fra 3860 4) z-Grup/liv moget?(克雷德) 我尝试了以下rest api url: “+encodeURIComponent(列表名)+”/ 当listName很简单,即没有特殊字符和空格时,我得到输

我想通过RESTAPI获取sharepoint 2010列表的内容。但我的列表的名称是非常复杂的(它们包含各种特殊字符,如:“,”,“?”,“-”,“/”,“(”等),我无法更改它们

示例:1)索赔提醒,GT 2) z-Det-andt 3) z-Pens-afregng fra 3860 4) z-Grup/liv moget?(克雷德)

我尝试了以下rest api url:

“+encodeURIComponent(列表名)+”/

当listName很简单,即没有特殊字符和空格时,我得到输出。但当它包含上述特殊字符时,它会给出错误

我查阅了以下网址:

但是,只有撇号的决议,而不是其他特殊字符


请提供帮助。

您可以使用以下JavaScript函数转换列表名称

function  convertListName(listName){
    var newListName="";
    var array=listName.split(/[.\-_, '?()$%^!@~+`|={}<>\[\]/]/g);   
    for(var i=0;i<array.length;i++){
        newListName+=array[i].charAt(0).toUpperCase() + array[i].slice(1)
    }
    if(!isNaN(newListName.charAt(0))){
        newListName="c_"+newListName;
    }
    return newListName;
}
函数convertListName(listName){
var newListName=“”;
var array=listName.split(/[.\-\'?()$%^!@~+`124;={}\[\]/]/g);
对于(VARI=0;I0)?数组[i]。子字符串(1):string.Empty);
} 
} 
name=string.Join(string.Empty,数组);
if(string.IsNullOrEmpty(name))
{ 
抛出新的InvalidOperationException(Resources.GetString(“CannotConvertNameToValidIdentifier”),新对象[]
{ 
名称
})); 
} 
if(Regex.IsMatch(名称[0].ToString(),“[^\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}]”,RegexOptions.Compiled))
{ 
name=“c_”+名称;
} 
如果(name.Length>128)
{ 
name=name.Substring(0,128);
} 
返回名称;
}

您尝试过url编码吗?是的。它只对特殊字符进行编码。但是简单的编码没有帮助
internal static string GetFriendlyName(string name) 
{ 
    string[] array = Regex.Split(name, "[^\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Cf}]", RegexOptions.Compiled); 
    for (int i = 0; i < array.Length; i++) 
    { 
        if (!string.IsNullOrEmpty(array[i]) && char.IsLower(array[i], 0)) 
        { 
            array[i] = char.ToUpper(array[i][0], CultureInfo.InvariantCulture) + ((array[i].Length > 0) ? array[i].Substring(1) : string.Empty); 
        } 
    } 
    name = string.Join(string.Empty, array); 
    if (string.IsNullOrEmpty(name)) 
    { 
        throw new InvalidOperationException(Resources.GetString("CannotConvertNameToValidIdentifier", new object[] 
        { 
            name 
        })); 
    } 
    if (Regex.IsMatch(name[0].ToString(), "[^\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}]", RegexOptions.Compiled)) 
    { 
        name = "c_" + name;
    } 
    if (name.Length > 128) 
    { 
        name = name.Substring(0, 128); 
    } 
    return name; 
}