#unicode #terminal #emoji #windows-terminal
#юникод #терминал #эмодзи #windows-терминал
Вопрос:
У меня есть приложение .NET Core. Единственное, что он делает, это:
System.Console.Out.WriteLine("x1b%G🍜");
Когда я запускаю это на «новой» вкладке Powershell в терминале Windows, он выводит
??
Когда я запускаю его во второй раз на той же вкладке, он правильно выводит:
🍜
(эмодзи рамэн)
Выполнение одной и той же строки дважды в одном процессе не работает — это ??
дважды.
(Если я не включу x1b%G
escape-последовательность, она «никогда» не появится в виде эмодзи рамэн)
То, что я пытаюсь сделать
Выясните, что именно «включает» смайлики для терминала (будь то терминал Windows, новый хост в Windows 11 и т. Д.).
Я подумал , что это может быть x1b%G
escape-последовательность xterm для включения UTF-8. Может быть, так оно и есть? …но почему бы и нет, пока процесс не завершится и не будет запущен снова в powershell?
Другие примечания
Если я не использую пустой профиль Powershell, а вместо этого использую тот, который выдает необычные подсказки ( Set-PoshPrompt -Theme powerlevel10k_rainbow
например)… затем смайлики «активируются» / «включены». Так, может быть, есть что-то, что делает Powershell или posh prompt, что я могу воспроизвести?
Правильный ответ на этот вопрос будет…
…скажите мне, что мне нужно сделать, чтобы смайлики правильно отображались в моем терминале, без необходимости запускать процесс дважды.
Ответ №1:
Необходимо установить кодировку вывода таким образом:
System.Console.OutputEncoding = Encoding.UTF8;