首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSON.Net序列化外语

使用JSON.Net序列化外语
EN

Stack Overflow用户
提问于 2015-09-05 04:59:28
回答 1查看 20.5K关注 0票数 12

我想将一个.NET对象序列化为JSON,其中包含汉语或俄语等外语字符串。当我(使用下面的代码)在生成的JSON中这样做时,它会将那些存储为字符串的字符编码为"?“而不是必需的unicode字符。

代码语言:javascript
复制
using Newtonsoft.Json;

var serialized = JsonConvert.SerializeObject(myObj, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, Formatting = Newtonsoft.Json.Formatting.Indented });

有没有一种方法可以在外语中使用JSON.Net序列化?

E.g

אספירין(希伯来语)

एस्पिरि(印地语)

阿司匹林(中文)

アセチルサリチル酸(日语)

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-05 06:51:38

导致这个问题的不是序列化程序;Json.Net可以很好地处理外来字符。您更有可能正在执行以下操作之一:

将JSON写入文件或流时,

  1. 使用了不适当的编码(或未设置编码)。您可能应该使用Encoding.UTF8.
  2. Storing将JSON放入数据库中的varchar列,而不是nvarchar。使用不支持unicode的查看器、使用错误的编码和/或使用没有完整unicode字符字形集的字体时,varchar不支持unicode characters.
  3. Viewing varchar。例如,Windows命令提示符窗口似乎就存在此问题。

要证明序列化程序不是问题所在,请尝试编译并运行以下示例程序。它将从相同的JSON创建两个不同的输出文件,一个使用UTF-8编码,另一个使用默认编码。使用记事本打开每个文件。“默认”文件将把外来字符作为?字符。在UTF-8编码文件中,您应该看到所有字符都完好无损。(如果您仍然看不到它们,请尝试将记事本字体更改为"Arial Unicode MS“。)

您还可以使用Visual Studio调试器查看JSON中的外来字符是否正确;只需在序列化JSON的行后放置一个断点并检查json变量。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;

class Program
{
    static void Main(string[] args)
    {
        List<Foo> foos = new List<Foo>
        {
            new Foo { Language = "Hebrew", Sample = "אספירין" },
            new Foo { Language = "Hindi", Sample = "एस्पिरि" },
            new Foo { Language = "Chinese", Sample = "阿司匹林" },
            new Foo { Language = "Japanese", Sample = "アセチルサリチル酸" },
        };

        var json = JsonConvert.SerializeObject(foos, Formatting.Indented);

        File.WriteAllText("utf8.json", json, Encoding.UTF8);
        File.WriteAllText("default.json", json, Encoding.Default);
    }
}

class Foo
{
    public string Language { get; set; }
    public string Sample { get; set; }
}
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32406513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档