Exemple #1
0
        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;
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 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;
            }
        }
Exemple #7
0
        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;
            }
        }