2012-07-07 12 views
5

मैं Google appengine पायथन 2.5 काम कर रहा हूं।यूनिकोडडेकोड एरर: 'ascii' कोडेक स्थिति 0 में बाइट 0xc3 को डीकोड नहीं कर सकता है: क्रमशः श्रेणी में नहीं (128)

MyUser नाम मान निम्नलिखित है क्योंकि

userName  = unicode(userName).encode('utf-8') # äºï¼égãwmj is value in this variable 

userName  = unicode(userName).encode('utf-8') 
strData = '{\"Sid\" :1, \"Oppid\" :%s, \"Aid\" :%s, \"EC\" :\"%s\", \"Name\" :\%s"' % (enemyID, userID, userEmpCode,userName) 


    params = {'deviceToken' : oDeviceToken, 
       'message'  : strMessage, 
       'CertificateId' : certificateId, 
       'Data'   : strData 
      } 


result = urlfetch.fetch(url = url, 
      payload = urllib.urlencode(params), 
      method = urlfetch.POST, 
      headers = {"Authorization" : authString}, 
      deadline = 30 
      ) 

मैं उपयोगकर्ता नाम पर निम्न चरणों का पालन कर रहा हूँ utf-8 ताकि मैं पेलोड के रूप में यह भेज सकता है में एन्कोड करने के लिए मैं निम्नलिखित कोड पर unicodedecoderror का सामना कर रहा

username = unicode(username).encode(utf-8) 

मेरा मानना ​​है कि त्रुटि तब होती है जब मैं फोन urllib.urlencode(params)

कृपया मार्गदर्शन क्या गलत हो रहा है .. या आप कर सकते हैं ..

और क्या appengine पर यूनिकोड स्ट्रिंग से निपटने के लिए परम रणनीति होना चाहिए अजगर ..

मैं अलग धागे .. पढ़ने विभिन्न समाधान की कोशिश की है, लेकिन अभी भी काम नहीं किया

+0

एक स्टैकट्रेस प्रदान करें:

फ़ाइल open कमांड के साथ encoding='utf-8' निर्दिष्ट मेरी समस्या का समाधान। और हो सकता है कि एक न्यूनतम कार्य उदाहरण उत्पन्न करने का प्रयास करें जो वेरिएबल का उपयोग नहीं करता है जो कहीं और परिभाषित किए गए हैं। – oxc

उत्तर

7

यो आपको लगता है कि आप unicode(userName) को अपने पहले से एन्कोडेड स्ट्रिंग पर एन्कोडिंग के बिना कॉल कर रहे हैं, इसलिए यह "वर्तमान डिफ़ॉल्ट स्ट्रिंग एन्कोडिंग पर डिफ़ॉल्ट" है, जो आपके मामले में ascii प्रतीत होता है।

आपको किसी भी मामले में unicode पर कॉल नहीं करना चाहिए, अगर आपको पता है कि यह एक यूनिकोड मान है, तो आप पहले से ठीक हैं, अगर नहीं, तो सही एन्कोडिंग के साथ .decode पर कॉल करें।
यदि आप अनिश्चित हैं, तो isinstance का उपयोग करके परीक्षण करें क्योंकि एक यूनिकोड मान को डीकोड करने का प्रयास करने से परिणामस्वरूप एक और त्रुटि होगी।

1

उबंटू लिनक्स 14.04 से फ्रीबीएसडी 10.3 तक पायथन 3 कोड पोर्ट करते समय मुझे एक ही समस्या थी। पाइथन 3.4.4 के साथ फ़ाइलों को खोलते समय बाद वाला सिस्टम UTF-8 के बजाय डिफ़ॉल्ट रूप से ASCII का उपयोग करता प्रतीत होता है।

open('filepath', encoding='utf-8') 
संबंधित मुद्दे

 संबंधित मुद्दे