Я очень новичок в python. Я пытаюсь отправить сообщения на сервер CCS android, используя скрипт python. Я получаю сообщения от RabbitMQ, а затем отправляю их в CCS через XMPP. Мой код основан на примере кода с сайта Android. Он выглядит следующим образом:python 'ascii' codec не может кодировать символы
client = xmpp.Client('gcm.googleapis.com', debug=['socket'])
client.connect(server=(SERVER,PORT), secure=1, use_srv=False)
auth = client.auth(USERNAME, PASSWORD)
if not auth:
print 'Authentication failed!'
sys.exit(1)
client.RegisterHandler('message', message_callback)
# RabbitMQ Start ....
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
print ' [*] Waiting for messages. To exit press CTRL+C'
def callback(ch, method, properties, body):
global client
body = body.replace("\\","")
try:
send_queue.append(body)
client.Process(1)
flush_queued_messages()
except Exception as ex:
print ex
channel.basic_consume(callback,
queue=GCMQUEUE,
no_ack=True)
channel.start_consuming()
Это работает очень хорошо. Но моя проблема в том, когда я смайлики в моей очереди я получаю его в шестнадцатеричном формате, как 22 \ XE2 \ x91 \ xa223 и происходит следующее сообщение об ошибке:
python 'ascii' codec can't encode characters in position 366-367: ordinal not in range
Я попытался заменить строку:
send_queue.append(body)
Для
send_queue.append(body.encode('ascii','ignore'))
Таким образом, я могу игнорировать эту ошибку, но это удаляет все символы Юникода. Как это исправить?
Ошибка возникает при кодировании 'unicode' в' str', trail '.encode ('utf-8')' в переменную 'unicode' – LittleQ
Как я уже упоминал im new в python. Не могли бы вы объяснить в деталях? –
Вы можете узнать переменную 'unicode' в соответствии с сообщениями об ошибках или показать нам путаницу. – LittleQ