我遇到了一个字符串编码的问题。
在一个邮件发送WS中,我接收到一个坏的字符串,其中包含“�”,而不是“é”(至少在Visual Studio的Debug模式下看到的是这样)。 该字符来自于一些JSON,在进入我的DTO时进行反序列化。
更改JSON的Content-Type并不能解决这个问题。 所以我想自己更改字符串的编码,因为JSON编码似乎是VS反序列化问题(如果你们中有人想看一下,我在这里开了一个线程here)。
我尝试过:
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);
或者:
byte[] bytes = Encoding.Default.GetBytes(messedUpString);
cleanString = Encoding.UTF8.GetString(bytes);
这并不是很有效... 我摆脱了那个 "�" 字符,这是好的一部分,但是我在 cleanString 中收到的是 "?" 而不是预期的 "é",这并不是很好,或者至少不是预期的行为。