я обычно это сделать, если я хотел напечатать Unicode:Проверьте, поддерживает ли stdout unicode?
print("There are ", end="")
try:
print(u"\u221E", end="") # ∞
unicode_support = True
except UnicodeError:
print("infinity", end="")
unicode_support = False
print(" ways to get Unicode wrong.")
if unicode_support:
print(u"\U0001F440 see you have a Unicode font.")
else:
print("You do not have Unicode support.")
Это не будет работать, если я хочу, чтобы возвращать строку Unicode из метода или что-то подобное, так как Python всегда будет понимать строковые литералы с Unicode в них и выдает эту ошибку только при печати на что-то без поддержки Unicode. Я хочу сделать что-то вроде этого:
import sys as _sys
UNICODE_SUPPORT = _sys.stdout.unicode_support
def get_heart():
if UNICODE_SUPPORT:
return u"\u2665" # ♥
return "heart"
print("I{}U".format(get_heart.upper()))
Я хотел бы эквивалент sys.stdout.supports_unicode
быть True
, если текущий стандартный вывод поддерживает Unicode еще False
.
Проверьте источник библиотеки кликов, я думаю, что эта библиотека обрабатывает эту проблему. –
Все кодировки stdout поддерживают * раздел * стандарта Unicode. Постарайтесь определить, какую часть вам интересны? Например, Latin-1 охватывает первые 256 кодовых точек. –