Проблема
Согласно documentation:
>>> unichr(8377)
u'\u20b9'
Это должно работать на любом Python 2.7 на любой системе.
Он выполняет именно то, что вы просили: он возвращает один символ юникода из его целочисленного представления. Однако этот символ Юникода не отображается как ₹
. Вместо этого возвращается версия версии, которая может отображаться с символами ascii.
В зависимости от вашего терминала, print
либо отобразить символ правильно:
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> unichr(8377)
u'\u20b9'
>>> print unichr(8377)
₹
или выдаст ошибку (Powershell на Windows):
PS C:\Windows\System32\WindowsPowerShell\v1.0> python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (
Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print unichr(8377)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files (x86)\Python2.7\lib\encodings\cp850.py", line 12, in en
code
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u20b9' in position
0: character maps to <undefined>
>>>
Возможное решение
Ваш терминал должен для приема символов Unicode.
Это answer может помочь вам:
import locale
print unichr(8377).encode(locale.getdefaultlocale()[1], 'replace')
В зависимости от вашей кодировки, символ может отображаться неправильно или как ?
.
Эта замена символов называется "tofu" или "mojibake", и это не проблема Python. Это связано с базовым терминалом (например, Powershell).
Thosethreads может вам помочь.
Если вы получаете эту ошибку, значит, ваша кодировка по умолчанию установлена на 'ascii', вы можете сделать: 'print unichr (8377) .encode ('utf-8')' –
Какой терминал вы используете? –
pydevconsole. 'print unichr (8377)' отлично работает, но если вы делаете 'unichr (8377)', он не дает '' ₹ ''в качестве вывода. Его 'u '\ u20b9'' –