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

C#调用新浪滚动新闻接口获取的Unicode序列无法转为可读中文问题

C# Unicode转义序列解码解决方案

错误原因

你当前的编码转换逻辑完全偏离了问题本质:你拿到的v1是标准JSON格式的Unicode转义序列,不是字符编码不匹配问题,不需要在UTF-8和Windows-1252之间做编码互转。

解决方法

方法1:原生JSON反序列化(推荐,适配.NET Core 3.0+ / .NET 5+)

直接将转义字符串包装为合法JSON字符串后反序列化,框架会自动处理所有转义逻辑:

using System.Text.Json;

// 拿到v1后直接执行以下代码
string decodedText = JsonSerializer.Deserialize<string>($"\"{v1}\"");
MessageBox.Show(decodedText);

方法2:正则替换(兼容.NET Framework老版本)

如果使用.NET Framework 4.x及更低版本,没有内置System.Text.Json,可以用正则匹配手动转义:

using System.Text.RegularExpressions;

string decodedText = Regex.Replace(v1, @"\\u([0-9a-fA-F]{4})", match => 
{
    return ((char)Convert.ToInt32(match.Groups[1].Value, 16)).ToString();
});
MessageBox.Show(decodedText);

方法3:完整解析JSONP结构(最稳妥)

你当前手动用Split切割字符串的逻辑容错性极低,一旦返回内容中包含特殊字符就会取值错误,直接解析完整JSONP结构更可靠:

using (WebClient client = new WebClient())
{
    client.Encoding = Encoding.UTF8;
    string v = client.DownloadString("https://feed.mix.sina.com.cn/api/roll/get?pageid=155&lid=1686&num=1&page=1&callback=feedCardJsonpCallback&_=" + DateTime.Now.ToString("HHmmss"));
    // 移除JSONP外层的函数包裹
    string pureJson = v.TrimStart("feedCardJsonpCallback(".ToCharArray()).TrimEnd(')', ';');
    // 解析JSON结构直接取title字段
    using JsonDocument doc = JsonDocument.Parse(pureJson);
    string title = doc.RootElement
        .GetProperty("result")
        .GetProperty("data")[0]
        .GetProperty("title")
        .GetString();
    MessageBox.Show(title);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 11:51:00