/// <summary>
        /// Преобразует строку в значение типа ДвоичныеДанные с учетом кодировки текста.
        /// </summary>
        /// <param name="str">Строка, которую требуется преобразовать в ДвоичныеДанные.</param>
        /// <param name="encoding">Кодировка текста</param>
        /// <param name="addBOM">Определяет, будет ли добавлена метка порядка байт (BOM) кодировки текста в начало данных.</param>
        /// <returns>Тип: ДвоичныеДанные.</returns>
        public static ДвоичныеДанные ПолучитьДвоичныеДанныеИзСтроки(string str, string encoding = null, bool addBOM = false)
        {
            // Получаем кодировку
            // Из синтаксис помощника если кодировка не задана используем UTF8

            System.Text.Encoding enc = System.Text.Encoding.UTF8;
            if (encoding != null)
            {
                enc = КодировкаТекста.GetEncoding(encoding, addBOM);
            }

            return(new ДвоичныеДанные(enc.GetBytes(str)));
        }
        // ToDo: ПолучитьБуферДвоичныхДанныхИзСтроки

        public static string ПолучитьСтрокуИзДвоичныхДанных(ДвоичныеДанные data, string encoding = null)
        {
            // Получаем кодировку
            // Из синтаксис помощника если кодировка не задана используем UTF8

            System.Text.Encoding enc = System.Text.Encoding.UTF8;
            if (encoding != null)
            {
                enc = КодировкаТекста.GetEncoding(encoding);
            }

            return(enc.GetString(data.Buffer));
        }
        private void OpenStream(IStreamWrapper streamObj, string encoding = null, string lineDelimiter = "\n", string eolDelimiter = null)
        {
            TextReader imReader;

            if (encoding == null)
            {
                imReader = FileOpener.OpenReader(streamObj.GetUnderlyingStream());
            }
            else
            {
                var enc = КодировкаТекста.GetEncoding(encoding);
                imReader = FileOpener.OpenReader(streamObj.GetUnderlyingStream(), enc);
            }
            _reader = GetCustomLineFeedReader(imReader, lineDelimiter, eolDelimiter, AnalyzeDefaultLineFeed);
        }
        private StreamWriter GetDefaultWriter(string path, string encoding)
        {
            StreamWriter writer;

            if (encoding == null)
            {
                writer = FileOpener.OpenWriter(path, new UTF8Encoding(true));
            }
            else
            {
                writer = FileOpener.OpenWriter(path, КодировкаТекста.GetEncoding(encoding));
            }

            return(writer);
        }
        private StreamReader GetDefaultReader(string path, string encoding)
        {
            StreamReader reader;

            if (encoding == null)
            {
                reader = FileOpener.OpenReader(path);
            }
            else
            {
                reader = FileOpener.OpenReader(path, КодировкаТекста.GetEncoding(encoding));
            }

            return(reader);
        }
        private void OpenFile(string path, string encoding = null, string lineDelimiter = "\n", string eolDelimiter = null,
                              bool?monopoly = null)
        {
            TextReader imReader;
            var        shareMode = (monopoly ?? true) ? FileShare.None : FileShare.ReadWrite;

            if (encoding == null)
            {
                imReader = FileOpener.OpenReader(path, shareMode);
            }
            else
            {
                var enc = КодировкаТекста.GetEncoding(encoding);
                imReader = FileOpener.OpenReader(path, shareMode, enc);
            }
            _reader = GetCustomLineFeedReader(imReader, lineDelimiter, eolDelimiter, AnalyzeDefaultLineFeed);
        }
Example #7
0
        public static Процесс Новый(string cmdLine, string currentDir = null, bool redirectOutput = false, bool redirectInput = false, string encoding = null, Соответствие env = null)
        {
            var sInfo = PrepareProcessStartupInfo(cmdLine, currentDir);

            sInfo.UseShellExecute = false;
            if (redirectInput)
            {
                sInfo.RedirectStandardInput = true;
            }

            if (redirectOutput)
            {
                sInfo.RedirectStandardOutput = true;
                sInfo.RedirectStandardError  = true;
            }

            if (encoding != null)
            {
                var enc = КодировкаТекста.GetEncoding(encoding);

                sInfo.StandardOutputEncoding = enc;
                sInfo.StandardErrorEncoding  = enc;
            }

            //if (env != null)
            //{
            //    var source = env.Select(x => new
            //    {
            //        Key = x.Key.AsString(),
            //        Value = x.Value.AsString()
            //    }).Where(x => !string.IsNullOrWhiteSpace(x.Key));

            //    foreach (var kv in source)
            //    {
            //        sInfo.EnvironmentVariables[kv.Key] = kv.Value;
            //    }
            //}

            var p = new System.Diagnostics.Process();

            p.StartInfo = sInfo;

            return(new Процесс(p, encoding));
        }
        /// <summary>
        /// Кодирует строку для передачи в URL (urlencode)
        /// </summary>
        /// <param name="sourceString"></param>
        /// <param name="codeType"></param>
        /// <param name="encoding"></param>
        public static string КодироватьСтроку(string sourceString, СпособКодированияСтроки codeType, string encoding = null)
        {
            Encoding enc;

            if (encoding != null)
            {
                enc = КодировкаТекста.GetEncoding(encoding);
            }
            else
            {
                enc = Encoding.UTF8;
            }

            if (codeType == СпособКодированияСтроки.КодировкаURL)
            {
                return(EncodeStringImpl(sourceString, enc, false));
            }
            else
            {
                return(EncodeStringImpl(sourceString, enc, true));
            }
        }