кодирование / декодирование строк в Python - PullRequest
3 голосов
/ 03 января 2012

У меня есть функция, которая возвращает строку в кодировке utf-16, и я должен включить ее результат в другую строку путем замены:

string = myfunc()

debug_string = debug_string.replace("$rep$", string)

В моей среде Eclipse она работает нормально, но в другой средевыдает ошибку:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 23: ordinal not in range(128)

Знаете ли вы, какова возможная причина?

Спасибо

Ответы [ 3 ]

2 голосов
/ 03 января 2012

Ваша string переменная не в Unicode?Затем необходимо явно декодировать последовательность байтов (в кодировке UTF-16) из string (строковый тип) в объект Unicode:

u_string = myfunc().decode('utf-16')

debug_string также должен быть в Unicode.

0 голосов
/ 03 января 2012

Если возможно, работайте с юникодами до конца.Если вы не можете изменить myfunc, по крайней мере конвертируйте его результат в Unicode:

string = myfunc().decode('utf-16')

Если ваш debug_string уже является Unicode, вам не нужно менять что-либо еще.В противном случае также расшифруйте его, используя соответствующий кодек.

0 голосов
/ 03 января 2012

Попробуйте:

string = myfunc()

debug_string = debug_string.replace("$rep$", string).encode('utf-16')

Или:

string = myfunc()

debug_string = debug_string.replace("$rep$", string).decode('utf-16')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...