string s = "中国"; byte[] data = Encoding.GetEncoding(936).GetBytes(s); //非Linq写法 StringBuilder builder = new StringBuilder(); foreach (byte b in data) { builder.Append("%" + b.ToString("X2")); } string result = builder.ToString(); //linq的写法 result = string.Join("%", data.Select(b => b.ToString("X2")).ToArray());
public static string UrlEncode(string originalString) { byte[] bytes = Encoding.Default.GetBytes(originalString); System.IO.StringWriter stringWriter = new System.IO.StringWriter(); for (int i = 0; i < bytes.Length; i++) { byte b = bytes[i]; if (((b >= 48) && (b <= 57)) || ((b >= 65) && (b <= 90)) || ((b >= 97) && (b <= 122))) { stringWriter.Write((char)b); } else if (b == 32) { stringWriter.Write("+"); } else { stringWriter.Write("%{0:x2}", b); } } return stringWriter.ToString(); }
byte[] data = Encoding.GetEncoding(936).GetBytes(s);
//非Linq写法
StringBuilder builder = new StringBuilder();
foreach (byte b in data)
{
builder.Append("%" + b.ToString("X2"));
}
string result = builder.ToString();
//linq的写法
result = string.Join("%", data.Select(b => b.ToString("X2")).ToArray());
public static string UrlEncode(string originalString)
{
byte[] bytes = Encoding.Default.GetBytes(originalString);
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
for (int i = 0; i < bytes.Length; i++)
{
byte b = bytes[i];
if (((b >= 48) && (b <= 57))
|| ((b >= 65) && (b <= 90))
|| ((b >= 97) && (b <= 122)))
{
stringWriter.Write((char)b);
}
else if (b == 32)
{
stringWriter.Write("+");
}
else
{
stringWriter.Write("%{0:x2}", b);
} }
return stringWriter.ToString();
}