e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
63 lines
1.7 KiB
C#
63 lines
1.7 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="HttpEncoderUtility.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
/*
|
|
* Helper class for common encoding routines
|
|
*
|
|
* Copyright (c) 2009 Microsoft Corporation
|
|
*/
|
|
|
|
namespace System.Web.Util {
|
|
using System;
|
|
using System.Web;
|
|
|
|
internal static class HttpEncoderUtility {
|
|
|
|
public static int HexToInt(char h) {
|
|
return (h >= '0' && h <= '9') ? h - '0' :
|
|
(h >= 'a' && h <= 'f') ? h - 'a' + 10 :
|
|
(h >= 'A' && h <= 'F') ? h - 'A' + 10 :
|
|
-1;
|
|
}
|
|
|
|
public static char IntToHex(int n) {
|
|
Debug.Assert(n < 0x10);
|
|
|
|
if (n <= 9)
|
|
return (char)(n + (int)'0');
|
|
else
|
|
return (char)(n - 10 + (int)'a');
|
|
}
|
|
|
|
// Set of safe chars, from RFC 1738.4 minus '+'
|
|
public static bool IsUrlSafeChar(char ch) {
|
|
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9'))
|
|
return true;
|
|
|
|
switch (ch) {
|
|
case '-':
|
|
case '_':
|
|
case '.':
|
|
case '!':
|
|
case '*':
|
|
case '(':
|
|
case ')':
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// Helper to encode spaces only
|
|
internal static String UrlEncodeSpaces(string str) {
|
|
if (str != null && str.IndexOf(' ') >= 0)
|
|
str = str.Replace(" ", "%20");
|
|
return str;
|
|
}
|
|
|
|
}
|
|
}
|