读书人

HttpUtility.UrlEncode 编码输出的字母

发布时间: 2012-12-17 09:31:40 作者: rapoo

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();
}


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

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

读书人网 >VB Dotnet

热点推荐