Проверьте, поддерживает ли терминал юникод в ржавчине - PullRequest
4 голосов
/ 10 июля 2020

Я хотел бы каким-то образом сделать по существу следующее:

if supports_unicode {
    print!("some unicode");
} else {
    print!("ascii");
}

Есть ли способ в ржавчине проверить, поддерживает ли вывод Unicode?

Обновить

Я нашел способ проверить, поддерживает ли устройство Unicode, но он не проверяет, установлен ли текущий вывод на правильную кодировку, а также не проверяет, поддерживает ли шрифт полный диапазон символов Unicode. Если вам интересно, он использует ящик locale-codes 0.3.0, а код -

locale_codes::codeset::all_names().contains(&String::from("UTF-8"))

Но, как я уже сказал, это не решает мою проблему

Также, если хотите, вот более конкретный c пример проблемы, с которой я столкнулся. В интегрированном терминале VSCode (Windows 10 x64, VSCode 1.47), если я запускаю программу rust, которая печатает символ ? (U+1D465), я получаю различные результаты, например:

  • На самом деле он печатает правильный символ
  • Он печатает �
  • Он вообще ничего не печатает
  • Он печатает ? (U+1D435)

Надеюсь, этот пример поможет.

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