首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

HttpUtility.UrlEncode 编码输出的字母替小写,怎样改成大写呢

2012-12-17 
HttpUtility.UrlEncode 编码输出的字母为小写,怎样改成大写呢?我在使用 HttpUtility.UrlEncode 编码后输出

HttpUtility.UrlEncode 编码输出的字母为小写,怎样改成大写呢?
我在使用 HttpUtility.UrlEncode 编码后输出 的值 就像是 %3d 这样的, 我想输出 %3D 这样的 字母为大写的 。怎么办呢?

如果能把输出后的整个字符串 如 https%3a%2f%2fwww.abc.com  处理为 https%3A%2F%2Fwww.abc.com  这样的也可以。
[最优解释]

    Public Sub Main()
        Dim sInput, sRegex As String
        sInput = "aabbccddeeffcccgghhcccciijjcccckkcc"
        sRegex = "cc"
        Dim r As Regex = New Regex(sRegex)
        Dim myEvaluator As MatchEvaluator = New MatchEvaluator(AddressOf ReplaceCC)
        sInput = r.Replace(sInput, myEvaluator)
        Console.WriteLine(sInput)
    End Sub

    Public Function ReplaceCC(ByVal m As Match) As String
        Dim i As String = m.ToString.ToUpper
        Return i.ToString()
    End Function

[其他解释]
Encode之后的内容是给机器用的,也不是给人用的何必呢?
[其他解释]
引用:
Encode之后的内容是给机器用的,也不是给人用的何必呢?


但是我要把编码后的字符串发送到服务器,服务器只识别大写的,小写的无法识别。
[其他解释]
增加分数,继续等啊。高手现身吧。
[其他解释]
System.Web.HttpUtility.UrlEncode( "",   System.Text.UnicodeEncoding.GetEncoding( "GB2312 ")).ToUpper())
[其他解释]
引用:
System.Web.HttpUtility.UrlEncode( "", System.Text.UnicodeEncoding.GetEncoding( "GB2312 ")).ToUpper())


这样就把整个字符串中的字母全部转换为大写了,我只需要把 %3a 这样的字符中的 字母转换为大写 
[其他解释]
动手写一个,看看能满足你的需求吧


    Function UrlEncode(ByVal originalUrl As String) As String
        Dim bytes() As Byte = System.Text.Encoding.Default.GetBytes(originalUrl)
        Dim stringWriter As System.IO.StringWriter = New System.IO.StringWriter()
        For i As Integer = 0 To bytes.Length - 1
            Dim c As Byte = bytes(i)
            If ((c >= 48) And (c <= 57)) Or ((c >= 65) And (c <= 90)) Or ((c >= 97) And (c <= 122)) Then
                stringWriter.Write(CType(ChrW(c), Char))


            ElseIf c = 32 Then
                stringWriter.Write("+")
            Else
                stringWriter.Write("%{0:X2}", c)
            End If
        Next
        Return stringWriter.ToString()
    End Function


[其他解释]
正在找
[其他解释]
参考下面的C#解决方案:

/// <summary>
/// URL编码
/// </summary>
/// <param name="value">The value to Url encode</param>
/// <returns>Returns a Url encoded string</returns>
public string UrlEncode(string value)
{
StringBuilder result = new StringBuilder();

string unreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
foreach (char symbol in value)
{
if (unreservedChars.IndexOf(symbol) != -1)
{
result.Append(symbol);
}
else
{
result.Append('%' + String.Format("{0:X2}", (int)symbol));
}
}

return result.ToString();
}

[其他解释]
虽然这篇文章发了快2年了。还是得说一下
有时候思路真的很重要。不要茫目的相信技术。

这里很多时候人的思路就已经被局限了。想怎么样转化。但是有没有想过他的原理呢!~~
在网上看了很多人找这个方法。我想,这里给大家一个思路吧。

private static string UrlEncode(string temp, Encoding encoding)
        {
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < temp.Length; i++) {
                string t = temp[i].ToString();
                string k = HttpUtility.UrlEncode(t, encoding);
                if (t == k)
                {
                    stringBuilder.Append(t);
                }
                else {
                    stringBuilder.Append(k.ToUpper());
                }
            }
            return stringBuilder.ToString();
        }


怎么样,一看就明白了吧……
因为他的原理就是每一个字符都转化为一个编码值。那么,咱们就先把他一个个拿出来编码。
再单个转化成大写。这样不就解决了……

希望可以帮助到有需要的人。
[其他解释]
楼上的思路不错,顶下

热点排行