python · Python
संदेश
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
इसका मतलब
आपने किसी फ़ाइल या byte श्रेणी को UTF-8 मानकर पढ़ा और ऐसा byte मिला जिसकी UTF-8 अनुमति नहीं देता; संदेश में स्थान और byte दोनों लिखे हैं। आमतौर पर फ़ाइल Windows से आई cp1252 या कोई पुरानी encoding होती है, या वह पाठ ही नहीं होती — कोई चित्र, zip, या बिना खोला gzip डेटा। सही उपाय असली encoding पता करके उसे encoding= में देना है; errors="replace" पढ़ाई पूरी करा देता है पर उन bytes को प्रश्नचिह्न बना देता है, और डेटा चुपचाप बिगड़ा हुआ आगे चला जाता है।
सुधार
इसका एक-लाइन कमांड नहीं है। व्याख्या में लिखा है कि क्या देखना है।
- कौन देता है
- python
- Python
- 18
Python का traceback उत्तर को दो हिस्सों में बाँटता है — अंतिम पंक्ति बताती है कि क्या ग़लत हुआ, और उसके ऊपर के frames बताते हैं कि कहाँ — इसलिए केवल अंतिम पंक्ति पढ़ने पर नाम मिलता है और जगह छूट जाती है; और NoneType तथा KeyError जैसी "मान नहीं है" वाली त्रुटियों में कारण लगभग हमेशा उस frame से ऊपर होता है जहाँ गिरा।
एरर संदेश कैसे पढ़ें
- पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
- फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
- संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
- वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
- कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।
अक्सर पूछे जाने वाले सवाल
Q. “UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte” का क्या मतलब है?
आपने किसी फ़ाइल या byte श्रेणी को UTF-8 मानकर पढ़ा और ऐसा byte मिला जिसकी UTF-8 अनुमति नहीं देता; संदेश में स्थान और byte दोनों लिखे हैं। आमतौर पर फ़ाइल Windows से आई cp1252 या कोई पुरानी encoding होती है, या वह पाठ ही नहीं होती — कोई चित्र, zip, या बिना खोला gzip डेटा। सही उपाय असली encoding पता करके उसे encoding= में देना है; errors="replace" पढ़ाई पूरी करा देता है पर उन bytes को प्रश्नचिह्न बना देता है, और डेटा चुपचाप बिगड़ा हुआ आगे चला जाता है।
Q. इसे कैसे ठीक करें?
एक-लाइन कमांड नहीं है। ऊपर की व्याख्या में लिखा है कि क्या देखना है।
Q. यह कौन-सा औज़ार देता है?
python। यह Python में आता है, और संदेश 13 शब्दों का है।