Вывод на консоль в .NET 2.0
От: Dzirt2005  
Дата: 18.12.07 13:11
Оценка:
Добрый день.

Есть такой код:

using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("ЄєІіЇї");
        }

    }
}


В коде — вывод на консоль украинских букв "ЄєІіЇї". Проблема заключается в том, что буквы "Іі" выводятся неправильно, а именно знаками вопроса, вот так:

C:\1>a2.exe
Єє??Її


При этом, тот же самый код, скомпилированный под .NET 1.1 выводит буквы правильно, как и такой код на C:

#include "windows.h"
#include "stdio.h"

int main( int argc, char argv[] )
{
    char mass[100];
    strcpy( mass, "ЄєІіЇї" );
    CharToOem( mass, mass );
    printf( mass );
}


Есть ли возможность выводить правильно под .NET 2.0? Желательно от вывода через Console.* не отказываться...
Re: Вывод на консоль в .NET 2.0
От: Dzirt2005  
Дата: 19.12.07 09:39
Оценка:
Никто не знает? Или вопрос слишком простой?
Re[2]: Вывод на консоль в .NET 2.0
От: BluntBlind  
Дата: 19.12.07 09:41
Оценка:
Здравствуйте, Dzirt2005, Вы писали:
D>Никто не знает? Или вопрос слишком простой?
Глянь сво-во:
public static Encoding OutputEncoding { get; set; }
Re[3]: Вывод на консоль в .NET 2.0
От: Dzirt2005  
Дата: 19.12.07 11:03
Оценка:
Здравствуйте, BluntBlind, Вы писали:

BB>Здравствуйте, Dzirt2005, Вы писали:

D>>Никто не знает? Или вопрос слишком простой?
BB>Глянь сво-во:
BB>
BB>public static Encoding OutputEncoding { get; set; }
BB>

Глянул. И что я должен был там увидеть? Собственно дело-то не в консоли как таковой, а в самом классе Encoding. Вот такой код:

    String s = "ЄєІіЇї";
    Encoding encodeConsole = Encoding.GetEncoding(866);
    byte[] barr = encodeConsole.GetBytes(s.ToCharArray());

    foreach( byte b in barr)
        Console.Write("0x" + b.ToString("x") + " ");
    Console.WriteLine();


выведет на экран

0xf2 0xf3 0x3f 0x3f 0xf4 0xf5


а должен бы на самом деле вывести:

0xf2 0xf3 0xf6 0xf7 0xf4 0xf5


И почему-то в .NET 1.1 так и выводит, а в .NET 2.0 — нет. В .NET 2.0 что — не используются системные преобразования между кодировками, а изобретен очередной велосипед?
Re: Вывод на консоль в .NET 2.0
От: Аноним  
Дата: 20.12.07 22:14
Оценка:
Здравствуйте, Dzirt2005, Вы писали:

D>Добрый день.


D>Есть такой код:


D>
D>using System;

D>namespace ConsoleApp
D>{
D>    class Program
D>    {
D>        static void Main(string[] args)
D>        {
D>            Console.WriteLine("ЄєІіЇї");
D>        }

D>    }
D>}

D>


D>В коде — вывод на консоль украинских букв "ЄєІіЇї". Проблема заключается в том, что буквы "Іі" выводятся неправильно, а именно знаками вопроса, вот так:


D>
D>C:\1>a2.exe
D>Єє??Її
D>


D>При этом, тот же самый код, скомпилированный под .NET 1.1 выводит буквы правильно, как и такой код на C:


D>
D>#include "windows.h"
D>#include "stdio.h"

D>int main( int argc, char argv[] )
D>{
D>    char mass[100];
D>    strcpy( mass, "ЄєІіЇї" );
D>    CharToOem( mass, mass );
D>    printf( mass );
D>}
D>


D>Есть ли возможность выводить правильно под .NET 2.0? Желательно от вывода через Console.* не отказываться...

конечно можно, используй юникод в приложении 100% поможет!
Re: Вывод на консоль в .NET 2.0
От: kam Россия  
Дата: 21.12.07 08:14
Оценка:
Здравствуйте, Dzirt2005, Вы писали:

D>Есть такой код:


D>
D>            Console.WriteLine("ЄєІіЇї");
D>     

D>

D>Есть ли возможность выводить правильно под .NET 2.0? Желательно от вывода через Console.* не отказываться...

А в какой кодировке у тебя исходник на C#?
Сделай в UTF, и все получиться...

--
kam
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.