Як пісаць спецыяльныя сімвалы (0x80..0x9F) на кансоль з Windows?

Я хацеў бы мець гэты код:

System.Console.Out.WriteLine ("œil");

дысплей œil замест алей , як гэта робіць у маёй тэставай праграме.

<Код> Console.OutputEncoding усталёўваецца па змаўчанні Заходнееўрапейская (DOS) ( CodePage усталяваны на 850 і WindowsCodePage набор 1252) у маёй сістэме. Набор сімвалаў ўтрымлівае спецыяльны ОЕ і ОЕ diphtongs (як можна бачыць на артыкулы Вікіпедыі на Windows-1252 ), але як-то, я падазраю, што знакі не знойдзены ў ISO-8859- 1 набор атрымаць адкідаюцца/замяніць.

Сімвалы, такія як а , ç і г.д. атрымаць правільна адлюстроўваецца на кансолі, але любы знак у пашыраным 0x80 ... 0x9F дыяпазон няма.

Як я магу правільна адлюстроўваць іх на кансолі?

5
Я патлумачыла пытанні кодавай старонкі; клавішы System.Text.SBCSCodePageEncoding вяртае як у кодавую і кодавую Windows, і я зьбянтэжаны абодвух. Прабачце.
дададзена аўтар Pierre Arnaud, крыніца
Вельмі незвычайна, каб атрымаць кодавую старонку 1252 на кансолі, гэта амаль заўсёды 437, кодавая старонка IBM PC OEM. Які не мае глиф \ u0153. Вы можаце змяніць OutputEncoding але вы таксама павінны змяніць кансольны шрыфт.
дададзена аўтар Hans Passant, крыніца
Дарэчы, «Заходнееўрапейская (DOS)» з'яўляецца кодавая 850, а не 1252. Ён змяшчае ўсе знакі з ISO 8859-1 (г.зн. акна 1252-х 0xA0-0xFF), якія, магчыма, выклікалі некаторы замяшанне. .NET функцыянуюць самі па сабе выкарыстоўваць Unicode, але перакладаюцца (часам дрэнна), калі на кансоль з не-TrueType шрыфт абраны.
дададзена аўтар Random832, крыніца

2 адказы

Як гэта:

Console.OutputEncoding = System.Text.Encoding.UTF8;
System.Console.Out.WriteLine("œil");

Не забудзьцеся выбраць шрыфт для акна кансолі, якая падтрымлівае сімвалы вам трэба. Гэта здымак экрана майго акна кансолі, выкарыстоўваючы шрыфт Consolas.

enter image description here

5
дададзена
На самай справе, гэта не працуе. На маім Windows 7 x64, выкананне кода стварае крыж з наступным сімвалаў Алейныя .
дададзена аўтар Pierre Arnaud, крыніца
Сакрэт сапраўды ў купелі ... Выкарыстанне Consolas як шрыфт робіць дысплей вываду UTF8 правільна, гэтак жа, як тое, што адправіў Дэвіда ў яго скрыншот. Вялікі дзякуй.
дададзена аўтар Pierre Arnaud, крыніца
І, дарэчы, вось звязаны з гэтым пытанне: stackoverflow.com/questions/7939643/… (як я прачытаў спецыяльныя сімвалы таму)
дададзена аўтар Pierre Arnaud, крыніца
Не працуе. Ён раздрукаваць нешта падобнае на + OIL
дададзена аўтар Pierre-Alain Vigeant, крыніца
См stackoverflow.com/пытанні/1802600/& hellip; пра тое, як змяніць шрыфт кансолі ў C# з дапамогай Interop.
дададзена аўтар Pierre-Alain Vigeant, крыніца
Працуе добра для мяне. Які шрыфт ў вас ёсць у вашай кансолі вокны?
дададзена аўтар David Heffernan, крыніца
Майце на ўвазе, што Lucida Console мае шмат сімвалаў няправільна. Выкарыстоўвайце нешта яшчэ, напрыклад Consolas.
дададзена аўтар ggPeti, крыніца

Вы можаце ўсталяваць выходную кадыроўку на кансолі, як гэта ...

Console.OutputEncoding = Encoding.UTF8;
2
дададзена
Там ёсць рэха тут ...... ;-)
дададзена аўтар David Heffernan, крыніца
Так, я раблю гэта шмат сабе +1
дададзена аўтар David Heffernan, крыніца
Я мяркую, што ў канчатковым выніку каментуючы нясвежы старонкі :)
дададзена аўтар Prashanth, крыніца