序列化和反序列化包含特殊字符的数据

时间:2016-08-22 15:02:56

标签: c# json.net

.net MVC项目中,我们在持久性请求之间使用序列化(到JSON)类。基本上我们将序列化的用户数据存储在cookie中,以便我们可以在以后的阶段再次使用它并在某些地方进行渲染。

我们序列化的一个项目是用户的居住地点,在某些情况下,它包含一个特殊的字符,如'ë'(而不是普通的'e')。 序列化此字符后,cookie包含一个应该代表字符的序列,但是当我们在屏幕上呈现字符串时,它不会按照预期的方式再次格式化它。

示例:

  • 输入字符串:SintOdiliënberg
  • Cookie中的字符串:SintOdiliënberg
  • 呈现时的字符串:Sint Odili%C3%83%C2%ABnberg

显然我需要渲染的字符串与输入字符串相同。

我们用来序列化的代码(json.net库):

public class ClassWithResidenceProperty {
    public string Residence {get;set;}
    public string Serialize()
    {
        return JsonConvert.SerializeObject( this );
    }
}

此外,我在本地运行应用程序时无法重现此错误。这让我觉得我可能需要在某处设置一些文化旗帜。我试过这个:

return JsonConvert.SerializeObject( this, 
    new JsonSerializerSettings() 
    { 
         Culture = new CultureInfo("nl-NL")
    }
);

(我住在荷兰)。但是,强制这种文化不会改变我们的测试环境。

  • 我正在寻找可能导致此问题的原因。
  • 我基本上需要是以正确格式呈现的字符串。

感谢任何建议或评论。

0 个答案:

没有答案