C#:更改字符串编码?

C#:更改字符串编码?,c#,json,string,encoding,C#,Json,String,Encoding,我正在努力对我的一个字符串进行编码 在发送WS的邮件中,我收到一个错误字符串,其中包含“�" 而不是“é”(至少我在VisualStudio的调试模式中看到了这一点)。 该字符来自一些JSON,当将WS输入到我的DTO中时,这些JSON被反序列化 更改JSON的内容类型并不能解决问题。 所以我想我将自己更改字符串的编码,因为JSON编码看起来像是VS反序列化问题(如果你们中有人想看的话,我启动了一个线程) 我试过: Encoding iso = Encoding.GetEncoding("ISO

我正在努力对我的一个字符串进行编码

在发送WS的邮件中,我收到一个错误字符串,其中包含“�" 而不是“é”(至少我在VisualStudio的调试模式中看到了这一点)。 该字符来自一些JSON,当将WS输入到我的DTO中时,这些JSON被反序列化

更改JSON的内容类型并不能解决问题。 所以我想我将自己更改字符串的编码,因为JSON编码看起来像是VS反序列化问题(如果你们中有人想看的话,我启动了一个线程)

我试过:

Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding defaultEncoding = Encoding.Default;
byte[] bytes = defaultEncoding.GetBytes(messedUpString);
byte[] isoBytes = Encoding.Convert(defaultEncoding, iso, bytes);
cleanString = iso.GetString(isoBytes);
或:


而且它不是真的有效…我摆脱了“�“char,这是很好的部分,但是我在cleanString中接收”?“而不是预期的“é”,这不是真正的好,或者至少不是预期的行为。

事实上,在我的应用程序中,一切都很好

我使用SOAPUI进行测试,这是我的错误。 我为我的浏览器下载了一些rest插件,从那里开始尝试,一切正常


感谢@MattiVirkkunen

的帮助,如果您的数据已经是
字符串
,现在修复它已经太迟了。当您第一次将数据从字节转换为字符串时,您需要使用正确的编码。@MattiVirkkunen我无法更改它。这是一个MVC2方法控制器,反序列化功能是框架的一部分。这是意味着我不能做任何事情来解决这个问题?好吧,你必须更改它,因为没有其他方法来修复它。你可以在ASP.NET中配置输入编码,它应该能够从标题中检测到它。作为最后的手段,你可以始终将请求正文作为二进制读取并自己解码。
byte[] bytes = Encoding.Default.GetBytes(messedUpString);
cleanString = Encoding.UTF8.GetString(bytes);