use*_*862 2 c# serialization utf-8 xml-serialization
我今天已经对此进行了大量搜索,但我找不到如何使用UTF-8编码进行反序列化.
<?xml version="1.0" encoding="UTF-8"?>
<AvailabilityRequestV2 xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance"
siteid="0000"
apikey="0000"
async="false" waittime="0">
<Type>4</Type>
<Id>159266</Id>
<Radius>0</Radius>
<Latitude>0</Latitude>
<Longitude>0</Longitude>
</AvailabilityRequestV2>
Run Code Online (Sandbox Code Playgroud)
如果我试试这个
string xmlString = File above;
XmlSerializer serializer = new XmlSerializer(typeof(AvailabilityRequestV2));
AvailabilityRequestV2 request = (AvailabilityRequestV2)serializer.Deserialize(
new MemoryStream(Encoding.UTF8.GetBytes(xmlString)));
Run Code Online (Sandbox Code Playgroud)
如果我把鼠标放在调试模式请求我得到这个:
{<?xml version="1.0" encoding="utf-16"?><AvailabilityRequestV2
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
..................
Run Code Online (Sandbox Code Playgroud)
我如何强制成为UTF-8?
我只看到序列化,但反序列化我没有.
Llo*_*oyd 11
您可以使用StreamReader
并指定UTF-8,您也可以告诉它使用BOM(如果存在):
using (StreamReader reader = new StreamReader("my.xml",Encoding.UTF8,true)) {
XmlSerializer serializer = new XmlSerializer(typeof(SomeType));
object result = serializer.Deserialize(reader);
}
Run Code Online (Sandbox Code Playgroud)
我不确定当XML阅读器遇到XML中的encoding="utf-16"
指令时会发生什么,它可能会切换.
归档时间: |
|
查看次数: |
17376 次 |
最近记录: |