You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中编码含\n与\r的字符串并将反斜杠转为%5c?

在C#中实现反斜杠编码为%5c的字符串编码需求

如果你需要将字符串中的**字面反斜杠('')**编码为%5c,同时正确处理\n(换行符)和\r(回车符)的编码,可以用以下几种方法解决:

方法1:使用Uri.EscapeDataString(推荐)

这个方法符合标准URL编码规则,会自动将反斜杠编码为%5c,换行符\n编码为%0a,回车符\r编码为%0d,完全满足你的需求:

string originalString = @"包含\反斜杠\n换行\r回车的字符串";
string encodedString = Uri.EscapeDataString(originalString);
// 输出示例:"包含%5c反斜杠%0a换行%0d回车的字符串"

方法2:自定义编码逻辑(精确控制)

如果需要更精细的控制,可以手动遍历字符串,对特定字符进行编码:

using System.Text;
using System.Web;

string originalString = @"包含\反斜杠\n换行\r回车的字符串";
StringBuilder encodedBuilder = new StringBuilder();

foreach (char c in originalString)
{
    switch (c)
    {
        case '\\':
            encodedBuilder.Append("%5c");
            break;
        case '\n':
            encodedBuilder.Append("%0a");
            break;
        case '\r':
            encodedBuilder.Append("%0d");
            break;
        default:
            // 对其他字符使用标准URL编码
            encodedBuilder.Append(HttpUtility.UrlEncode(c.ToString()));
            break;
    }
}

string encodedString = encodedBuilder.ToString();

方法3:替换占位符适配HttpUtility.UrlEncode

如果你必须使用HttpUtility.UrlEncode,可以通过占位符规避它对反斜杠的异常处理:

using System.Web;

string originalString = @"包含\反斜杠\n换行\r回车的字符串";
// 先用占位符替换反斜杠,避免被错误编码
string tempString = originalString.Replace("\\", "___BACKSLASH___");
// 编码其他字符
string tempEncoded = HttpUtility.UrlEncode(tempString);
// 替换回目标编码
string encodedString = tempEncoded.Replace("___BACKSLASH___", "%5c");

注意:占位符要选择原字符串中不会出现的内容,避免冲突。

内容的提问来源于stack exchange,提问作者PremKumar Shanmugam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:17:25