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); }