Как я могу напечатать фразу на иврите в терминале Python 3?

Кто-нибудь знает, почему мой терминал Python 3 не отображает юникод должным образом?

text= "בראשית ברא אלהים את השמים ואת הארץ".encode("UTF-8")
print (text)

но вывод:

b'\xd7\x91\xd7\xa8\xd7\x90\xd7\xa9\xd7\x99\xd7\xaa \xd7\x91\xd7\xa8\xd7\x90 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9d \xd7\x90\xd7\xaa \xd7\x94\xd7\xa9\xd7\x9e\xd7\x99\xd7\x9d \xd7\x95\xd7\x90\xd7\xaa \xd7\x94\xd7\x90\xd7\xa8\xd7\xa5'

Как правильно распечатать?

или если я не кодирую это:

text= "בראשית ברא אלהים את השמים ואת הארץ"
print (text)

выходит эта ошибка:

return codecs.charmap_encode(input,self.errors,encoding_table)[0]

UnicodeEncodeError: кодек 'charmap' не может кодировать символы в позиции 0-5: символы сопоставляются с


person oj pr    schedule 17.07.2021    source источник
comment
Вы видели это? Думаю, это может вам помочь.   -  person Carlos    schedule 17.07.2021
comment
Это зависит от ОС, но для Windows вы можете установить поддержку иврита, а затем переключиться на шрифт, поддерживающий иврит, в окне CMD. Я сделал это с китайским, и он отлично работает. См. это.   -  person Mark Tolonen    schedule 28.07.2021


Ответы (2)


Вы можете либо избежать кодирования, либо кодировать, а затем декодировать.

In [1]: text= "בראשית ברא אלהים את השמים ואת הארץ"

In [2]: print(text)
בראשית ברא אלהים את השמים ואת הארץ

In [3]: encoded = text.encode('utf8')

In [4]: decoded = encoded.decode('utf8')

In [5]: print(decoded)
בראשית ברא אלהים את השמים ואת הארץ
person andi    schedule 17.07.2021

text является значением bytes. print принимает str значений; str(b'foo') это не 'foo', а "b'foo'".

Не кодируйте text в первую очередь. Это уже подходящее значение для использования в качестве аргумента для print. Любое кодирование, необходимое для вашего терминала, выполняется файлоподобным объектом, в который print записывает.

text = "בראשית ברא אלהים את השמים ואת הארץ"
print(text)
person chepner    schedule 17.07.2021