Это похоже на версию .NET.Ваш код C #, вероятно, использует более новую версию.
C #
// .NET 4.0
Uri.EscapeUriString("[]"); // OUTPUT: "%5B%5D"
// .NET 4.5
Uri.EscapeUriString("[]"); // OUTPUT: "[]"
PowerShell
# v5
[Uri]::EscapeUriString("[]") # OUTPUT: "%5B%5D"
# for reference
Add-Type "
using System;
namespace PowerShell
{
public static class Uri
{
public static string EscapeUriString(string stringToEscape)
{
return System.Uri.EscapeUriString(stringToEscape);
}
}
}"
[PowerShell.Uri]::EscapeUriString("[]") # OUTPUT: "%5B%5D"
Нет "Стандартного C #".Решение состоит в том, чтобы убедиться, что оба используют одну и ту же версию .NET, или реализовать свой собственный метод escape.
В качестве альтернативы используйте System.Net.WebUtility.UrlEncode
, который, по-видимому, возвращает "%5B%5D"
в обоих случаях.