C#UTF-8-bom转为UTF-8

C#UTF-8-bom转为UTF-8

系统功能是生成个utf-8的xml文件下载到本机,但是用户的系统是Linux,我们的web系统部署到IIS上,生成的XML文件被windows给搞成了utf-8bom,linux又识别不了这种bom.
解决:

                    XmlDocument xmlDoc = new XmlDocument();
					//创建类型声明节点  
					XmlNode firstNode = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
					xmlDoc.AppendChild(firstNode);
					//创建根节点  
					XmlElement root = xmlDoc.CreateElement("unitData");
					//xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
					//xsi:noNamespaceSchemaLocation="unitData-1.0.xsd"
					root.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
					//root.SetAttribute("noNamespaceSchemaLocation", "xsi", "unitData-1.0.xsd");

					var attr = xmlDoc.CreateAttribute("xsi:noNamespaceSchemaLocation", "http://www.w3.org/2001/XMLSchema-instance");
					attr.Value = "unitData-1.0.xsd";
					root.Attributes.Append(attr);

					root.SetAttribute("unit", item.unit);
					root.SetAttribute("equipment", workstationName);
					root.SetAttribute("starttime", item.starttime);
					root.SetAttribute("endtime", item.endtime);
					root.SetAttribute("state", item.state);

					XmlElement node = xmlDoc.CreateElement("test");
					node.SetAttribute("name", "FAT");
					node.SetAttribute("testResultCode", item.state.ToLower() == "ok" ? "passed" : "failed");
					node.InnerText = string.Empty;
					root.AppendChild(node);

					xmlDoc.AppendChild(root);

					string savePath = subpath + "\\" + item.Model + "_" + item.Serialnumber + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("HHmmss") + ".xml";
					//UTF8Encoding(false)表示不要bom
					StreamWriter sw = new StreamWriter(savePath, false, new UTF8Encoding(false));
					xmlDoc.Save(sw);
					sw.WriteLine();
					sw.Close();

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值