У меня проблемы с командой Python raw_input (Python2.6),
По какой-то причине raw_input не получает преобразованную строку, которую генерирует swedify (), и это дает мне ошибку кодирования, о которой я знаю, поэтому для начала я сделал swedify ().
Вот что я пытаюсь сделать:
elif cmd in ('help', 'hjälp', 'info'):
buffert += 'Just nu är programmet relativt begränsat,\nDe funktioner du har att använda är:\n'
buffert += ' * historik :: skriver ut all din historik\n'
buffert += ' * ändra <något> :: ändrar något i databasen, följande finns att ändra:\n'
print swedify(buffert)
Это прекрасно работает, выводит шведские символы так, как я хочу, чтобы они выводились на консоль.
Но когда я пытаюсь (в том же коде, с теми же значениями \ x ??, распечатать этот кусок:
core['goalDistance'] = raw_input(swedify('Hur långt i kilometer är ditt mål: '))
core['goalTime'] = raw_input(swedify('Vad är ditt mål i minuter att springa ' + core['goalDistance'] + 'km på: '))
Тогда я получу это:
C:\Users\Anon>python löp.py
Traceback (most recent call last):
File "l÷p.py", line 92, in <module>
core['goalDistance'] = raw_input(swedify('Hur långt i kilometer är ditt mål: '))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe5' in position 5: ordinal not in range(128)
Теперь я погуглил, нашел несколько «решений», но ни одно из них не работает, некоторые грустные, что мне нужно создать пакетный скрипт, который выполняет chcp ??? в начале, но это не чистое решение ИМО.
Вот свидания:
def swedify(inp):
try:
return inp.decode('utf-8')
except:
return '(!Dec:) ' + str(inp)
Любые решения о том, как получить raw_input для чтения моего возвращаемого значения из swedify ()?
я пытался из кодировки импортировать getencoder, getdecoder и другие, но ничего к лучшему.