在C#中,处理URI(统一资源标识符)和URL(统一资源定位符)时,可以使用Uri.EscapeDataString
、Uri.EscapeUriString
和HttpUtility.UrlEncode
(或WebUtility.UrlEncode
)方法来编码字符串。这些方法在处理编码时各有不同的用途和行为。以下是它们的区别以及在加密过程中遇到字符编码错误时的解析方法。
1. Uri.EscapeDataString
用途
- 用于对URI的数据部分进行编码。
- 将所有非字母数字字符(包括空格)转换为其百分号编码形式。
示例
using System;
class Program
{
static void Main()
{
string data = "Hello World! 你好,世界!";
string escapedData = Uri.EscapeDataString(data);
Console.WriteLine($"Escaped Data: {
escapedData}");
}
}
输出
Escaped Data: Hello%20World%21%20%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C%EF%BC%81
2. Uri.EscapeUriString
用途
- 用于对整个URI进行编码。
- 保留URI中的保留字符(如
?
、/
、#
等),不对它们进行编码。
示例
using System;
class Program
{
static void Main()
{
string uri = "http://example.com/path?query=Hello World!";
string escapedUri = Uri.EscapeUriString(uri);
Console.WriteLine($"Escaped URI: {