在我开始之前是问题所在。它应该是这样的:
Björn Nilsson,而不是显示奇怪的特殊字符,所有具有字符 Å、Ä 和 Ö 的值都变成了这样。
我用来自具有所有值的 XML 格式的 API 的值填充我的 DDL,我们也为此使用 Linq2Rest。
这个过程的样子
private readonly RestContext<ADConsultants> restContext;
public ConsultantContext(Uri uri, Format format)
{
restContext = new RestContext<ADConsultants>(GetRestClient(uri, format), GetSerializerFactory(format));
}
public enum Format
{
Pox,
Json
}
private static readonly IEnumerable<Type> knownTypes = new[] {typeof (ADConsultants)};
public static IRestClient GetRestClient(Uri uri, Format format)
{
switch (format)
{
case Format.Pox:
return new XmlRestClient(uri);
case Format.Json:
return new JsonRestClient(uri);
default:
throw new NotImplementedException();
}
}
private static ISerializerFactory GetSerializerFactory(Format format)
{
switch (format)
{
case Format.Pox:
return new XmlSerializerFactory(knownTypes);
case Format.Json:
return new JsonNetSerializerFactory();
default:
throw new NotImplementedException();
}
}
public IQueryable<ADConsultants> Consultant
{
get { return restContext.Query; }
}
}
这是我的 JsonNetSerializerFactory 类:
public class JsonNetSerializerFactory :ISerializerFactory
{
public ISerializer<T> Create<T>()
{
return new JsonNetSerializer<T>();
}
public class JsonNetSerializer<T> : ISerializer<T>
{
public T Deserialize(string input)
{
return JsonConvert.DeserializeObject<T>(input);
}
public IList<T> DeserializeList(string input)
{
return JsonConvert.DeserializeObject<IList<T>>(input);
}
}
}
这是在我的控制器内部:
var consultants = new ConsultantContext(
new Uri("http://adress:port/api/consultants"),
ConsultantContext.Format.Json)
.Consultant
.Where(x => x.Office == "Örebro")
.OrderBy(x => x.DisplayName)
.ToList()
.Select(x => new
{
name = x.DisplayName
});
我通过这样做做了一个测试:
name = "åäö"
它运行良好,ddl 值为“åäö”
感谢任何有关如何修复字符 Å Ä Ö 的帮助作为我的 DDL 中的值。
HTTP 标头是 utf-8,我的 html 内容也有。它必须是需要设置为特定字符集的 XML,我该怎么做?
提前致谢!