C# UTF8编码

发布于 2024-10-29 12:32:55 字数 196 浏览 0 评论 0原文

我有一个 c# 程序,可以检索一些 JSON 数据并使用 Newtonsoft JSON 对其进行反序列化。 当我在程序中使用波斯字符时,JSON 代码将显示如下:\u060c \u067e\u0644\u0627\u06a9 .... 另外,在我在程序中检索 JSON 数据后,该字符仍然显示为其编码示例。但在我反序列化之后它转换为???字符。

我应该怎么办?

I have a c# program that retrieve some JSON data and use Newtonsoft JSON to Deserialize it.
as i use persian chars in my program the JSON codes will be shown like this:\u060c \u067e\u0644\u0627\u06a9 .... also after i retrive the JSON data in my program this chars still show like its coded sample.but after i Deserialize it converted to ???? chars.

what should i do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

香橙ぽ 2024-11-05 12:32:55

你的 JSON 反序列化器坏了; \uXXXX 应该被转换成正确的字符。

要自己执行此操作,请使用此函数

// Turns every occurrence of \uXXXX into a proper character
void UnencodeJSONUnicode(string str) {
    return Regex.Replace(str,
                         @"\\u(?<value>[0-9a-f]{4})",
                         match => {
                             string digits = match.Groups["value"].Value;
                             int number = int.Parse(digits, NumberStyles.HexNumber);
                             return char.ConvertFromUtf32(number);
                         });
}

(未经测试的代码;我目前没有可用的 VS。一些异常处理可能也很好)

Your JSON deserializer is broken; \uXXXX is supposed to be turned into proper characters.

To do that yourself, use this function

// Turns every occurrence of \uXXXX into a proper character
void UnencodeJSONUnicode(string str) {
    return Regex.Replace(str,
                         @"\\u(?<value>[0-9a-f]{4})",
                         match => {
                             string digits = match.Groups["value"].Value;
                             int number = int.Parse(digits, NumberStyles.HexNumber);
                             return char.ConvertFromUtf32(number);
                         });
}

(Untested code; I don't have VS available at the moment. Some exception handling would probably be nice too)

一个人的旅程 2024-11-05 12:32:55

看起来它已经被 JSON 编码了,所以你需要解码它。 DataContractJsonSerializer 类可以执行此操作。

有关详细信息,请参阅此 MSDN 链接。

Looks like it has been JSON encoded, so you need to decode it. The DataContractJsonSerializer class can do this.

See this MSDN link for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文