जब आप "我"
दर्ज करते हैं, तो पाइथन दुभाषिया टर्मिनल से आपके स्थानीय चरित्र सेट में उस चरित्र का प्रतिनिधित्व करता है, जो ""
की वजह से एक स्ट्रिंग बाइट-बाय-बाइट में संग्रहीत करता है। मेरे यूटीएफ -8 सिस्टम पर, यह है। आपके पर, यह '\xce\xd2'
है क्योंकि आप GB2312 का उपयोग करते हैं। यह आपके चर a
के मान को समझाता है।
जब आप u"我"
दर्ज करते हैं, अजगर दुभाषिया पता है नहीं जो 我
चरित्र एन्कोडिंग में है क्या यह होता है काफी एक साधारण स्ट्रिंग के लिए के रूप में ही है। यह एक यूनिकोड स्ट्रिंग में चरित्र के बाइट्स संग्रहीत करता है, प्रत्येक बाइट को यूनिकोड कोडपॉइंट के रूप में व्याख्या करना, इसलिए गलत परिणाम u'\xce\xd2'
(या, मेरे बॉक्स पर, u'\xe6\x88\x91'
)।
यह समस्या केवल इंटरैक्टिव दुभाषिया में मौजूद है। जब आप पाइथन स्क्रिप्ट या मॉड्यूल लिखते हैं, तो आप शीर्ष के पास specify the encoding कर सकते हैं और यूनिकोड स्ट्रिंग ठीक से बाहर आ जाएंगी।
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(u"liberté")
print("liberté")
स्रोत
2012-04-23 09:05:06
आप किस टर्मिनल का उपयोग कर रहे हैं? मैं अपने यूनिकोड gnome-terminal ('c === u '\ u6211'') –
@ChrisMorgan I पर इन कोडों का परीक्षण आईडीई में परिणामों का पुन: उत्पन्न नहीं कर सकता। –
आईडीएलई के साथ इसे भी repro कर सकते हैं –