internal static bool SaveFileCoreWithEncoding(Form1 form, String fileName, String text, bool savingAll = false) { XtraTabControl pagesTabControl = form.pagesTabControl; bool success = true; FileStream fileStream = null; StreamWriter textFile = null; try { Encoding fileEncoding = EncodingUtil.GetDefaultEncoding(); if (pagesTabControl != null) { fileEncoding = TabUtil.GetTabTextEncoding(pagesTabControl.SelectedTabPage); } if (fileName.EndsWith(".xml")) { try { byte[] byteArray = fileEncoding.GetBytes(text); Encoding xmlEncoding; using (MemoryStream stream = new MemoryStream(byteArray)) { using (XmlTextReader xmlreader = new XmlTextReader(stream)) { xmlreader.MoveToContent(); xmlEncoding = xmlreader.Encoding; } } if (fileEncoding.GetType() != xmlEncoding.GetType()) { TabsUpdate(pagesTabControl, savingAll, UpdatePhase.End); //Useful to save all execution WindowManager.ShowInfoBox(form, LanguageUtil.GetCurrentLanguageString("EncodingXmlToSave", className)); TabsUpdate(pagesTabControl, savingAll, UpdatePhase.Begin); //Useful to save all execution fileEncoding = xmlEncoding; } if (!XmlValidator.Validate(form, ValidationType.DTD, false, fileEncoding)) { throw new FakeException(); } } catch (Exception) { TabsUpdate(pagesTabControl, savingAll, UpdatePhase.End); //Useful to save all execution DialogResult questionResult = WindowManager.ShowQuestionBox(form, LanguageUtil.GetCurrentLanguageString("InvalidXmlToSave", className)); TabsUpdate(pagesTabControl, savingAll, UpdatePhase.Begin); //Useful to save all execution if (questionResult == DialogResult.No) { throw; } } //if (!XmlValidator.Validate(form, ValidationType.DTD, false)) //{ // if (WindowManager.ShowQuestionBox(form, LanguageUtil.GetCurrentLanguageString("InvalidXmlToSave", className)) == DialogResult.No) // { // throw new FakeException(); // } //} //else //{ // byte[] byteArray = fileEncoding.GetBytes(text); // Encoding xmlEncoding; // using (var stream = new MemoryStream(byteArray)) // { // using (var xmlreader = new XmlTextReader(stream)) // { // xmlreader.MoveToContent(); // xmlEncoding = xmlreader.Encoding; // } // } // if (fileEncoding.GetType() != xmlEncoding.GetType()) // { // WindowManager.ShowInfoBox(form, LanguageUtil.GetCurrentLanguageString("EncodingXmlToSave", className)); // fileEncoding = xmlEncoding; // } //} } fileStream = File.Create(fileName); textFile = new StreamWriter(fileStream, fileEncoding); textFile.Write(text.Replace(ConstantUtil.newLine, Environment.NewLine)); TabUtil.SetTabTextEncoding(pagesTabControl.SelectedTabPage, fileEncoding); } catch (UnauthorizedAccessException) { Form form1 = null; if (pagesTabControl != null) { form1 = pagesTabControl.FindForm(); } WindowManager.ShowAlertBox(form1, LanguageUtil.GetCurrentLanguageString("UnauthorizedAccess", className)); success = false; } catch (FakeException) { success = false; } finally { if (textFile != null) { textFile.Close(); } if (fileStream != null) { fileStream.Close(); } } return(success); }