Добрый день.
Есть такой код:
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.* не отказываться...
Никто не знает? Или вопрос слишком простой?
Здравствуйте, Dzirt2005, Вы писали:
D>Никто не знает? Или вопрос слишком простой?
Глянь сво-во:
public static Encoding OutputEncoding { get; set; }
Здравствуйте, 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 что — не используются системные преобразования между кодировками, а изобретен очередной велосипед?
Здравствуйте, 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% поможет!
Здравствуйте, Dzirt2005, Вы писали:
D>Есть такой код:
D>D> Console.WriteLine("ЄєІіЇї");
D>
D>
D>Есть ли возможность выводить правильно под .NET 2.0? Желательно от вывода через Console.* не отказываться...
А в какой кодировке у тебя исходник на C#?
Сделай в UTF, и все получиться...
--
kam