获取“给定编码中的无效字符”。

时间:2016-05-11 05:24:26

标签: xml c#-4.0 svg

我通过svg导出图片。以下是我的c#代码。

string chartTitle = "ABC 50 µG";
XmlDocument xd = new XmlDocument();
xd.XmlResolver = null;

string chartSvg = "<svg><text x=\"1\" y=\"15\" font-size=\"14\" font-weight='bold' font-family=\"Arial\" ><tspan x=\"458\" dy=\"10\"> " + chartTitle + "</tspan></text></svg>"

xd.LoadXml(chartSvg);
svgGraph = Svg.SvgDocument.Open(xd);

由于Invalid character in the given encoding. Line 1, position 110.中的µ符号,我在上一行收到错误chartTitle

请帮助,我该如何处理这个

2 个答案:

答案 0 :(得分:0)

您可以尝试这样:

var byteArr = Encoding.ASCII.GetBytes(svgContents);
using (var str = new MemoryStream(byteArr))
{
   var svgDoc = SvgDocument.Open(str);
   var bitmap = svgDoc.Draw();
   bitmap.Save(path, ImageFormat.Png);
}

另请查看SVG Engine codeplex

答案 1 :(得分:0)

使用以下代码获得解决方案。

string chartTitle = "ABC 50 µG";
XmlDocument xd = new XmlDocument();
xd.XmlResolver = null;

string chartSvg = "<svg><text x=\"1\" y=\"15\" font-size=\"14\" font-weight='bold' font-family=\"Arial\" ><tspan x=\"458\" dy=\"10\"> " + chartTitle + "</tspan></text></svg>"

xd.LoadXml(chartSvg);    
XmlDeclaration obj = xd.CreateXmlDeclaration("1.0", "ISO-8859-1", "yes");
XmlElement root = xd.DocumentElement;
xd.InsertBefore(obj, root);
svgGraph = Svg.SvgDocument.Open(xd);