Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать codepage консоли? 
V
    Опции темы
Dims
Дата 9.3.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 0
Всего: 11



Как узнать, в какой кодировке операционная система выдаёт информацию на консоль, например, команда dir?
То есть, чтобы на русских виндах выдавало cp866, а на других, соответственно, другое.
PM MAIL   Вверх
sergioK
Дата 9.3.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Цитата(Dims @ 9.3.2010,  11:50)
Как узнать, в какой кодировке операционная система выдаёт информацию на консоль, например, команда dir?
То есть, чтобы на русских виндах выдавало cp866, а на других, соответственно, другое.

Console.OutputEncoding.CodePage
подойдет ?
PM MAIL   Вверх
Dims
Дата 10.3.2010, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 0
Всего: 11



Нет, возвращает 1251. А надо 866.
PM MAIL   Вверх
Kanes
Дата 11.3.2010, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 11.3.2005

Репутация: нет
Всего: нет



Dims, а как вы именно записали это дело?
Код

static void Main(string[] args)
{
            int input = Console.InputEncoding.CodePage;
            int output = Console.OutputEncoding.CodePage;

            Console.WriteLine("Input: {0}", input);
            Console.WriteLine("Output: {0}", output);
            Console.WriteLine();
}

У меня выводит: 866 в обоих случаях. (Windows 7, .NET 3.5 SP 1)



Это сообщение отредактировал(а) Kanes - 11.3.2010, 01:02
--------------------
Big gun - big future  
PM MAIL   Вверх
mrbrooks
Дата 11.3.2010, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Код

Thread.CurrentThread.CurrentUICulture.TextInfo.OEMCodePage;


Добавлено через 4 минуты
аналогично можно посмотреть и в классе CultureInfo.
PM MAIL   Вверх
Dims
Дата 11.3.2010, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 0
Всего: 11



См. ниже. Приложение оконное, наверное, поэтому Console... даёт не то. Так же видно, зачем мне это:

Код

private void Form1_Shown(object sender, EventArgs e)
        {
            System.Diagnostics.ProcessStartInfo psi =
                new System.Diagnostics.ProcessStartInfo("net.exe", "help");

            psi.UseShellExecute = false;
            psi.RedirectStandardOutput = true;


            psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
            System.Diagnostics.Process proc;
            proc = System.Diagnostics.Process.Start(psi);

            textBox1.AppendText("ConsoleOutput: " + Console.OutputEncoding.CodePage.ToString() + Environment.NewLine );
            textBox1.AppendText("ConsoleInput: " + Console.InputEncoding.CodePage.ToString() + Environment.NewLine);
            textBox1.AppendText("ASCII: " + Encoding.ASCII.CodePage.ToString() + Environment.NewLine);
            textBox1.AppendText("ProcOutput: " + proc.StandardOutput.CurrentEncoding.CodePage + Environment.NewLine);
            textBox1.AppendText("cp866: " + Encoding.GetEncoding("cp866").CodePage.ToString() + Environment.NewLine);
            textBox1.AppendText("OEM: " + CultureInfo.CurrentCulture.TextInfo.OEMCodePage.ToString() + Environment.NewLine);

            
            //string output = new StreamReader(proc.StandardOutput.BaseStream, Encoding.ASCII).ReadToEnd();
            //string output = proc.StandardOutput.ReadToEnd();
            string output = new StreamReader(proc.StandardOutput.BaseStream, Encoding.GetEncoding("cp866")).ReadToEnd();

            proc.WaitForExit(5000);

            textBox1.AppendText(output);
        }

PM MAIL   Вверх
Google
  Дата 23.1.2020, 23:55 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0920 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.