Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
SharePoint中的内部名称编码_Sharepoint - Fatal编程技术网

SharePoint中的内部名称编码

SharePoint中的内部名称编码,sharepoint,Sharepoint,\u x0020\u替换SharePoint内部字段名中的空格,这是一个相当广为人知的知识。在使用SharePoint web services时,这可能是一场噩梦,除非在比较字段名时编写替换规则 我刚刚在一个名为SSL2的字段中发现了另一个“编码异常”。奇怪的是,内部名称以\u x0053\u SL2结尾。我尝试过类似于RRL2的东西,结果显示为\ux0052\uxx0052。由此看来,编码中使用的数字表示该字符的ASCII值。空间同样是\ux0020\ux0 我的问题有两个: 在这种情况下,

\u x0020\u
替换SharePoint内部字段名中的空格,这是一个相当广为人知的知识。在使用SharePoint web services时,这可能是一场噩梦,除非在比较字段名时编写替换规则

我刚刚在一个名为SSL2的字段中发现了另一个“编码异常”。奇怪的是,内部名称以
\u x0053\u SL2
结尾。我尝试过类似于RRL2的东西,结果显示为
\ux0052\uxx0052
。由此看来,编码中使用的数字表示该字符的ASCII值。空间同样是
\ux0020\ux0

我的问题有两个:

  • 在这种情况下,是什么导致SharePoint对这些内容进行编码 字符。

  • 概括地说,正在进行什么样的编码,是否有一个通用的 我能做的第一步是解码字符串 而不是取代特定的 我遇到的事情 并且知道这是个问题。


  • SharePoint XML对名称进行编码,因为它希望能够将字段名称用作XML中的属性


    您可以使用System.Xml.XmlConvert.EncodeName对您的姓名进行编码

    您应该使用System.Xml.XmlConvert.DecodeName

    这是一个秘密):


    这是一个老问题,但我想了解这个问题的第一部分,但它没有得到回答,所以这里是

    本质上,
    SSL2
    被编码为
    \u x0053\u SL2
    ,因为它类似于“A1模式”excel单元格引用(
    [a-zA-Z]{1,3}[0-9]{1,5}
    )。当Sharepoint看到其中一个字符时,它决定需要对第一个字符进行编码


    这显然不是标准的XML编码,我不打算提出任何理论来解释为什么会这样做,但希望这至少能解释OP观察到的情况。

    不起作用。将SSL2放入EncodeName将产生SSL_x005F_x0020_2。不是SharePoint使用的_x0053_SL_x0020_2。它不编码像
    这样的unicode字符ỳść
    。请看@SalientBrain-answer。你能给我们更多关于这个问题的细节吗?你如何解决这个问题?我也面临同样的问题。
    public static string EncodeName(string name)
    {
        var encodedName = string.Empty;
        foreach (var c in name)
        {
            var s = c.ToString();
            byte[] bytes = Encoding.BigEndianUnicode.GetBytes(s);
            //Regex.Match(s, "[^\x00-\x80]")
            //IsCyrillic (0x400–0x4FF) и IsCyrillicSupplement (0x500–0x52F)
            //if (Regex.Match(s, @"\p{IsCyrillic}|\p{IsCyrillicSupplement}").Success)
            if (!Regex.Match(s, @"[a-zA-Z0-9_]").Success)
            {
                encodedName += "_x";
                foreach (var b in bytes)
                {
                    encodedName += b.ToString("X2").ToLowerInvariant();
                }
                encodedName += "_";
            }
            else
            {
                encodedName += s;
            }
        }
        if (encodedName.Length > 32)
        {
            encodedName = encodedName.Substring(0, 32);
        }
        return encodedName;
    }