110,535
社区成员
发帖
与我相关
我的任务
分享
private void button1_Click(object sender, EventArgs e)
{
//string _Value1 ="http://www.abcd.com/汉字/abc/又是汉字";
string _Value1 = "http://www.abcd.com/abc/abc/仅仅这里是汉字";
string _Value = EncoderUrl(_Value1);
MessageBox.Show(_Value.ToString());
_Value = DecoderUrl(_Value);
MessageBox.Show(_Value.ToString());
}
private string EncoderUrl(string p_Value)
{
string _ReturnUrl = "";
for (int i = 0; i != p_Value.Length; i++)
{
if ((int)p_Value[i] > 255)
{
_ReturnUrl += EncoderText(p_Value[i].ToString(), System.Text.Encoding.UTF8);
}
else
{
_ReturnUrl += p_Value[i].ToString();
}
}
return _ReturnUrl;
}
private string DecoderUrl(string p_Value)
{
string[] _TempValue = p_Value.Split('/');
string _ReturnUrl="";
for (int i = 0; i != _TempValue.Length; i++)
{
if (_TempValue[i].IndexOf("%") == 0)
{
_ReturnUrl += DecoderText(_TempValue[i],System.Text.Encoding.UTF8) + "/";
}
else
{
_ReturnUrl += _TempValue[i] + "/";
}
}
return _ReturnUrl;
}
/// <summary>
/// 转换"%BF%D0%C0%EF%C0%EF%B4%F3%B1%A6%B1%B4%B6%F9"为字符
/// </summary>
/// <param name="p_Value">"%BF%D0%C0%EF%C0%EF%B4%F3%B1%A6%B1%B4%B6%F9"</param>
/// <param name="p_TextEncoding">编码方式</param>
/// <returns>字符</returns>
public static string DecoderText(string p_Value, System.Text.Encoding p_TextEncoding)
{
System.IO.MemoryStream _Memory = new System.IO.MemoryStream(1);
string[] _Temp = p_Value.Split('%');
for (int i = 0; i != _Temp.Length; i++)
{
try
{
_Memory.WriteByte(Convert.ToByte(_Temp[i], 16));
}
catch
{
}
}
byte[] _TextByte = new byte[_Memory.Length];
_Memory.Position = 0;
_Memory.Read(_TextByte, 0, _TextByte.Length);
_Memory.Dispose();
return p_TextEncoding.GetString(_TextByte);
}
/// <summary>
/// 转换字符为"%BF%D0%C0%EF%C0%EF%B4%F3%B1%A6%B1%B4%B6%F9"
/// </summary>
/// <param name="p_Value">字符</param>
/// <param name="p_TextEncoding">编码方式</param>
/// <returns>"%BF%D0%C0%EF%C0%EF%B4%F3%B1%A6%B1%B4%B6%F9"</returns>
public static string EncoderText(string p_Value, System.Text.Encoding p_TextEncoding)
{
string _ReturnValue = BitConverter.ToString(p_TextEncoding.GetBytes(p_Value), 0);
_ReturnValue = "%" + _ReturnValue.Replace("-", "%");
return _ReturnValue;
}