Я хотел бы каким-то образом сделать по существу следующее:
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
)
Надеюсь, этот пример поможет.