2015-09-07 11 views
6

benim Python kodu çalıştırdığınızda, aşağıdaki hataları alıyorum:'UCS-2' codec'i pozisyonunda karakterleri kodlamak olamaz 1050-1050

x = g.request('search', {'q' : 'TaylorSwift', 'type' : 'page', 'limit' : 100})['data'][0]['id'] 

# GET ALL STATUS POST ON PARTICULAR PAGE(X=PAGE ID) 
for x1 in g.get_connections(x, 'feed')['data']: 
    print (x1) 
    for x2 in x1: 
     print (x2) 
     if(x2[1]=='status'): 
      x2['message'] 
: Burada
File "E:\python343\crawler.py", line 31, in <module> 
    print (x1) 
    File "E:\python343\lib\idlelib\PyShell.py", line 1347, in write 
    return self.shell.write(s, self.tags) 
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 1050-1050: Non-BMP character not supported in Tk 

benim kodudur

Bunu nasıl düzeltebilirim?

+0

; Python'u, örneğin ConEmu konsolunda veya bir web tarayıcısında gösterebilen ortamda etkileşimli olarak çalıştırabilirsiniz. [Ipython not defteri] 'yi deneyin (http://ipython.org/notebook.html). – jfs

cevap

17

Verileriniz, Basic Multilingual Plane dışındaki karakterleri içerir. Örneğin Emoji, BMP'nin dışındadır ve IDLE, Tk tarafından kullanılan pencere sistemi bu karakterleri işleyemez.

Sen replacement character için BMP dışında her şeyi eşleştirmek için bir translation table kullanabilirsiniz:

import sys 
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) 
print(x.translate(non_bmp_map)) 

non_bmp_map BMP dışında tüm codepoints haritalar (0xFFFF daha herhangi codepoint yüksek, yukarı highest Unicode codepoint your Python version can handle kadar tüm yol) bmp Unicode olmayan karakterleri görmeniz gerekiyorsa

>>> print('This works! \U0001F44D') 
This works! 
>>> print('This works! \U0001F44D'.translate(non_bmp_map)) 
This works! � 
+0

Teşekkür ederim, ancak bunları ekledikten sonra, yeni bir hatayı gösterir: print (x1.translate (non_bmp_map)) AttributeError: 'dict' nesnesi 'translate' özelliğine sahip değil, nasıl yapmalı? – Andi

+1

@Andi: 'x1' bir dize değil, ancak bir sözlük. Bu durumda str (x1) .translate (non_bmp_map) 'yapabilirdiniz. –

+0

Çalışıyor, çok teşekkür ederim. – Andi

İlgili konular