मैं सरल नहीं समझ सकता! :( मैं एक utf-8 इनकोडिंग साइट से डेटा को खत्म कर रहा हूँ, अच्छी तरह से है कि कम से कम है कि यह क्या कहते हैं:पायथन और स्केपर एन्कोडिंग समस्या
Content-Type: text/html;charset=utf-8
मैं एक() कॉल XPath चयनकर्ता निकालने के साथ नियमित रूप यूनिकोड तार की सूची हो रही है:
[u'Westbahnhofstr.\xa010', u'72070\xa0T\xfcbingen']
अब मैं एक यूनिकोड स्ट्रिंग में सूची में शामिल हो:
item['city']= element.select('//div[@id="bubble_2"]/div/text()').extract()
इस सूची में है 210
item['city']= "".join(element.select('//div[@id="bubble_2"]/div/text()').extract())
अब तक तो अच्छा:
u'Beim Nonnenhaus\xa0672070\xa0T\xfcbingen'
समस्या दिखाई देता है, जबकि मैं उत्पादन करने के लिए इस यूनिकोड स्ट्रिंग स्क्रीन पर या तो (प्रिंट) या एक फ़ाइल (लिख) की कोशिश करो। जो कुछ भी मैं इसे एक त्रुटि (http://pastebin.com/51DkX2R2) रिटर्न का प्रयास करें:
item['city'].encode('utf-8')
यह मेरा pipeline.py है और कैसे मैं खोलने के लिए उपयोग और:
exceptions.UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 11: ordinal not in range(128)
मैं निश्चित रूप से उत्पादन से पहले बाइट स्ट्रिंग के लिए यूनिकोड इनकोडिंग है मेरी सीवीएस पर लिखें:
012:import csv
import items
import urlparse
import codecs
class DepostPipeline(object):
def __init__(self):
self.modelsCsv = csv.writer(codecs.open('Dees.csv', mode='w',encoding='utf-8'))
self.modelsCsv.writerow(['city'])
def process_item(self, item, spider):
if isinstance(item, items.DetailsItem):
item['city'] = item['city'].encode('utf-8')
self.modelsCsv.writerow([item['city']])
return item
सबसे अजीब बात यह है कि अपने सिस्टम (खिड़कियों पर अजगर) संभालती पूरी तरह से यूनिकोड तार है
C:\Console2>python
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s=u'Beim Nonnenhaus\xa0672070\xa0T\xfcbingen'
>>> print s
Beim Nonnenhaus 672070 Tübingen
मैं पिछले 10 दिनों में यूटीएफ -8, यूनिकोड, एन्कोडिंग और डिकोडिंग के बारे में पढ़ रहा हूं लेकिन ऐसा लगता है कि मुझे अभी भी कुछ याद आ रहा है ?! मैं किसी भी मदद या सलाह की सराहना करता हूं।
क्षमा करें, किसी भी तरह मैं याद है कि मेरे कोड से, यह जगह पर पहले से ही था ... मैं अपने पोस्ट को संपादित करने कर रहा हूँ। जवाब के लिए धन्यवाद। – mrki
पूर्ण त्रुटि लॉग: http://pastebin.com/51DkX2R2 – mrki
@mrki: ठीक है, ऐसा इसलिए है क्योंकि आप 'codecs.open()' का उपयोग कर रहे हैं; मैंने यह खो दिया। अगली बार, आपके प्रश्न में ट्रेसबैक सहित बहुत उपयोगी होगा! :-) –