aliyun-net-credentials/Utils/AcsURLEncoder.cs (33 lines of code) (raw):
using System.Globalization;
using System.Text;
using System.Web;
namespace Aliyun.Credentials.Utils
{
public class AcsURLEncoder
{
private const string EncodingUtf8 = "UTF-8";
public static string Encode(string value)
{
return HttpUtility.UrlEncode(value, Encoding.UTF8);
}
public static string PercentEncode(string value)
{
var stringBuilder = new StringBuilder();
var text = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
var bytes = Encoding.GetEncoding(EncodingUtf8).GetBytes(value);
foreach (var b in bytes)
{
var c = (char) b;
if (text.IndexOf(c) >= 0)
{
stringBuilder.Append(c);
}
else
{
stringBuilder.Append("%").Append(string.Format(CultureInfo.InvariantCulture, "{0:X2}", (int) c));
}
}
return stringBuilder.ToString();
}
}
}