public static Encoding GetEncodingByCharacterSet(GEDCOMCharacterSet cs) { Encoding res = Encoding.Default; switch (cs) { case GEDCOMCharacterSet.csANSEL: res = new AnselEncoding(); break; case GEDCOMCharacterSet.csASCII: res = Encoding.GetEncoding(1251); break; case GEDCOMCharacterSet.csUNICODE: res = Encoding.Unicode; break; case GEDCOMCharacterSet.csUTF8: res = Encoding.UTF8; break; } return(res); }
public void SaveToFile(string fileName, GEDCOMCharacterSet charSet) { // Attention: processing of Header moved to BaseContext! using (FileStream fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { SaveToStreamExt(fileStream, charSet); } }
public void SaveToStreamExt(Stream outputStream, GEDCOMCharacterSet charSet) { // Attention: processing of Header moved to BaseContext! fTree.Pack(); using (StreamWriter writer = new StreamWriter(outputStream, GEDCOMUtils.GetEncodingByCharacterSet(charSet))) { SaveToStream(writer); writer.Flush(); } fTree.Header.CharacterSet = GEDCOMCharacterSet.csASCII; }
public static string GetCharacterSetStr(GEDCOMCharacterSet value) { string str = ""; switch (value) { case GEDCOMCharacterSet.csASCII: str = "ASCII"; break; case GEDCOMCharacterSet.csANSEL: str = "ANSEL"; break; case GEDCOMCharacterSet.csUNICODE: str = "UNICODE"; break; case GEDCOMCharacterSet.csUTF8: str = "UTF-8"; break; } return(str); }
public override string ParseString(string strValue) { fValue = GEDCOMUtils.GetCharacterSetVal(strValue); return(string.Empty); }
private void DefineEncoding(StreamReader reader) { var format = GetGEDCOMFormat(fTree); GEDCOMCharacterSet charSet = fTree.Header.CharacterSet; switch (charSet) { case GEDCOMCharacterSet.csUTF8: if (!SysUtils.IsUnicodeEncoding(reader.CurrentEncoding)) { SetEncoding(Encoding.UTF8); // file without BOM } else { fEncodingState = EncodingState.esUnchanged; } break; case GEDCOMCharacterSet.csUNICODE: if (!SysUtils.IsUnicodeEncoding(reader.CurrentEncoding)) { SetEncoding(Encoding.Unicode); // file without BOM } else { fEncodingState = EncodingState.esUnchanged; } break; case GEDCOMCharacterSet.csANSEL: if (format == GEDCOMFormat.gf_ALTREE) { // Agelong Tree 4.0 with ANSEL is actually characteristic // for the Russian-language data export SetEncoding(Encoding.GetEncoding(1251)); } else { SetEncoding(new AnselEncoding()); } break; case GEDCOMCharacterSet.csASCII: if (format == GEDCOMFormat.gf_Native) { // GEDKeeper native format (old) and ASCII charset SetEncoding(Encoding.GetEncoding(1251)); } else { var fmtProps = GEDCOMFormats[(int)format]; if (fmtProps.PredefCharset > -1) { SetEncoding(Encoding.GetEncoding(fmtProps.PredefCharset)); } else { string cpVers = fTree.Header.CharacterSetVersion; if (!string.IsNullOrEmpty(cpVers)) { int sourceCodepage = ConvertHelper.ParseInt(cpVers, DEF_CODEPAGE); SetEncoding(Encoding.GetEncoding(sourceCodepage)); } else { if (fTree.Header.Language.Value == GEDCOMLanguageID.Russian) { SetEncoding(Encoding.GetEncoding(1251)); } else { SetEncoding(Encoding.GetEncoding(DEF_CODEPAGE)); } } } } break; } }
private void DefineEncoding(StreamReader reader) { GEDCOMCharacterSet charSet = fTree.Header.CharacterSet; switch (charSet) { case GEDCOMCharacterSet.csUTF8: if (!SysUtils.IsUnicodeEncoding(reader.CurrentEncoding)) { SetEncoding(Encoding.UTF8); // file without BOM } else { fEncodingState = EncodingState.esUnchanged; } break; case GEDCOMCharacterSet.csUNICODE: if (!SysUtils.IsUnicodeEncoding(reader.CurrentEncoding)) { SetEncoding(Encoding.Unicode); // file without BOM } else { fEncodingState = EncodingState.esUnchanged; } break; case GEDCOMCharacterSet.csANSEL: SetEncoding(new AnselEncoding()); break; case GEDCOMCharacterSet.csASCII: var format = GetGEDCOMFormat(fTree); if (format == GEDCOMFormat.gf_Native) { // GEDKeeper native format (old) and ASCII charset SetEncoding(Encoding.GetEncoding(1251)); } else { var fmtProps = GEDCOMFormats[(int)format]; if (fmtProps.PredefCharset > -1) { SetEncoding(Encoding.GetEncoding(fmtProps.PredefCharset)); } else { string cpVers = fTree.Header.CharacterSetVersion; if (!string.IsNullOrEmpty(cpVers)) { int sourceCodepage = SysUtils.ParseInt(cpVers, DEF_CODEPAGE); SetEncoding(Encoding.GetEncoding(sourceCodepage)); } else { SetEncoding(Encoding.GetEncoding(DEF_CODEPAGE)); } } } break; } }