большинство терминалов ascii не могут отображать символы Юникода (вы можете попробовать изменить шрифт ... возможно, это сработает) ... поэтому даже если вы преодолеете ошибку кодирования, ваш отпечаток, вероятно, будет выглядеть как �������Windows�������
если запустить его в режиме ожидания, это сработает ...
я бы настоятельно рекомендовал бы просто print(repr(string_that_might_have_unicode))
, поскольку это гарантирует печатное представление ascii ... и нет ничего хуже, чем сбой вашего приложения из-за того, что вы пытались напечатать некоторую отладочную информацию ... (при печати repr
появится что-то более похожее на b"'\\u6211\\u7684\\u7535\\u8111\\u603b\\u662f\\u51fa\\u73b0Windows\\u9700\\u8981\\u6fc0\\
u6d3b'"
, вы также можете попробовать encode
вручную, прежде чем распечатать его
print(my_unicode_string.encode("utf8"))
, что может работать ... в некоторых терминалах ... но на самом деле ... просто распечатайте repr, если вы не показываете это пользователю ( но поскольку вы говорите о сервере, я представляю, что это не клиентское приложение терминала, а отладочная информация, которая печатается (и перенаправляется в лог-файл?))
, если вам действительно нужно печатать точный юникод к терминалу вместо repr, тогда я думаю, что вам нужно выполнить шаг ручного декодирования, чтобы отправить utf8 на реальный терминал ... но гораздо проще просто всегда печатать repr при регистрации (это имеет преимущество, показывая вы невидимые и пробельные символы ... но не здорово, если это часть клиентского приложения)