Вывод символа Unicode в C # - PullRequest
4 голосов
/ 02 июля 2010

Я новичок в программировании и самоучка.Я пытаюсь вывести астрологический символ Тельца, который должен быть U + 2649 в Юникоде.Вот код, который я использую ...

string myString = "\u2649";
byte[] unicode = System.Text.Encoding.Unicode.GetBytes(myString);
Console.WriteLine(unicode.Length);

В результате я получаю число 2 вместо символа или шрифта.Я уверен, что я делаю что-то не так.

Ответы [ 4 ]

7 голосов
/ 02 июля 2010

У вас должен быть шрифт, который отображает этот глиф. Если вы это сделаете, то:

Console.WriteLine(myString); 

- это все, что вам нужно.

РЕДАКТИРОВАТЬ: Обратите внимание, что единственный шрифт, который я мог найти, который имеет этот глиф, это "MS Reference Sans Serif".

5 голосов
/ 28 мая 2012

Почему вы конвертируете его в юникод, это ничего не изменит .. потеряет конвертацию и сделает следующее:

string a ="\u2649"  ; 

Console.write(a) ; 
2 голосов
/ 02 июля 2010

Длина символа Unicode в байтах составляет 2 , и вы записываете Length в консоль.

Console.WriteLine(unicode.Length);

Если вы хотите отобразить фактический символ, то вы хотите:

Console.WriteLine(myString); 

Вы должны использовать шрифт с таким диапазоном Юникода, чтобы он отображался правильно.

ОБНОВЛЕНИЕ:

При использовании шрифта консоли по умолчанию вышеприведенный Console.WriteLine(myString) будет выводить символ ?, поскольку \u2649 отсутствует.Насколько я до сих пор гуглил, не существует простого способа заставить консоль отображать символы Юникода, которые еще не являются частью системных кодовых страниц или шрифта, выбранного для консоли.

Может быть возможно изменить шрифт, используемый консолью: Изменение шрифтов консоли

1 голос
/ 02 июля 2010

Вы выводите длину символа в байтах.Консоль, однако, не поддерживает вывод Unicode, поэтому она будет отображаться как «?»характер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...