예제 #1
0
        protected override void BeginProcessing()
        {
            base.BeginProcessing();
            parser = new ParseDelimited(header: Header, quote: Quote, delimiter: Delimiter);
            WriteVerbose(String.Format("Determining encoding for {0}.", path));

            Encoding[] encodings = new System.Text.Encoding[] { CmdletEncoding.Convert(psEncoding), System.Text.Encoding.UTF8, System.Text.Encoding.ASCII, System.Text.Encoding.Default, System.Text.Encoding.UTF32 };

            int tried = 0;

            foreach (Encoding encoding in encodings)
            {
                try {
                    tried++;
                    WriteVerbose(String.Format("Trying {0}", encoding.EncodingName));
                    checkEncoding(encoding);
                    break;
                } catch (InvalidDataException e) {
                    stream.Close();
                    reader.Close();
                    if (psEncoding != FileSystemCmdletProviderEncoding.Unknown)
                    {
                        throw new InvalidDataException(String.Format("Could not parse using {0} - ({1}). Ommiting encoding flag will try all common encodings.", encoding.EncodingName, e.Message));
                    }
                    else if (tried == encodings.Length)
                    {
                        throw new InvalidDataException(String.Format("Could not determine encoding ({0}). Check input data or specify a non standard encoding using the -Encoding flag.", e.Message));
                    }
                }
            }
            WriteVerbose(String.Format("Reading {0} with {1} encoding", path, reader.CurrentEncoding.EncodingName));
        }
 protected override void BeginProcessing()
 {
     base.BeginProcessing();
     parser = new ParseDelimited(header: Header, quote: Quote, delimiter: Delimiter);
 }