существует файл py1 c следующим содержанием:
python -c "x=u'''$1'''; print x.encode('idna')"
буква u, в начале значения для переменной - это попытка привести ввод в bash
./py1 подпись.рф
к следующему виду в python:
x=u"подпись.рф"
так вот, при вызове скрипта получаем следующий вывод:
~$ ./py1 а
xn--nba1k
~$ ./py1 апо
xn--34-eea4dwnbb5725d
но:
~$ ./py1 ф
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/encodings/idna.py", line 164, in encode
result.append(ToASCII(label))
File "/usr/lib/python2.7/encodings/idna.py", line 76, in ToASCII
label = nameprep(label)
File "/usr/lib/python2.7/encodings/idna.py", line 38, in nameprep
raise UnicodeError("Invalid character %r" % c)
UnicodeError: Invalid character u'\x84'
ошибка по-видимому в данном месте
u'''$1'''
и возможно логичнее было бы воспользоваться sys.argv[] в python, однако я никак не возьму в толк, как верно вставить полученную переменную в python из sys.agr в другую, с параметром u перед строкой, пробовал следующий подход:
создается файл wpq1.py с нижеизложенным:
# -*- coding: UTF-8 -*-
import sys
x= unicode(sys.argv[1])
print x
затем вызывается в shell:
~$ python wpy1.py фырфырфыр
Traceback (most recent call last):
File "wpy1.py", line 5, in <module>
x= unicode(sys.argv[1])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1
in position 0: ordinal not in range(128)