internal static String EncodeUriAsXLinkHref(String uri)
{
if (uri == null)
{
return(null);
}
// uses modified encoding rules from xlink href spec for encoding uri's.
// http://www.w3.org/TR/2000/PR-xlink-20001220/#link-locators
byte[] uriBytes = Encoding.UTF8.GetBytes(uri);
StringBuilder sb = new StringBuilder(uri.Length);
// iterate over uri bytes and build up an encoded string.
foreach (byte b in uriBytes)
{
if (!EscapeInXLinkHref(b))
{
sb.Append((char)b);
}
else
{
// the character needs to be encoded as %HH
sb.Append('%');
sb.Append(HttpChannelHelper.DecimalToCharacterHexDigit(b >> 4));
sb.Append(HttpChannelHelper.DecimalToCharacterHexDigit(b & 0xF));
}
}
return(sb.ToString());
} // EncodeUriAsXLinkHref