python - django: passing urlencoded unicode strings to QueryDict produces incorrect results -
& gt; & gt; & gt; Django.http से आयात क्वेरी
निम्नलिखित u'addam \ xc3 \ xb3w '
का उत्पादन करता है, जो मुझे उम्मीद नहीं है:
& gt; & gt; & gt; QueryDict (u'search-search_term = Adam% C3% B3w ') & lt; QueryDict: {u'search-search_term': [uadam \ xc3 \ xb3w ']} & gt;
यह अपेक्षित परिणाम उत्पन्न करता है: u'addam \ xf3w '
:
& gt; & gt; & gt; QueryDict ('search-search_term = Adam% C3% B3w') & lt; QueryDict: {u'search-search_term ': [u'addam \ xf3w']} & gt;
पहले मामले में, मैं QueryDict को यूनिकोड स्ट्रिंग पास करता हूं, जबकि दूसरे मामले में, मैं इसे बीटेटिंग पास करता हूं। हालांकि, मैं इस व्यवहार के ब्योरे के बारे में अभी भी गहन हूँ। अगर कोई ये समझा सकता है कि ये दो चीज़ें अलग-अलग परिणाम क्यों पैदा करती हैं, तो मुझे खुशी होगी।
मुझे लगता है कि क्वेरी डिक्ट
तर्क के रूप में एक स्ट्रिंग की अपेक्षा करता है। इसलिए जब आप यूनिकोड स्ट्रिंग पास करते हैं, तो अजैर इसे डिफ़ॉल्ट कनवर्टर का उपयोग करके कनवर्ट करने की कोशिश करता है, जो कि एस्सी है। यदि आपके पास एक यूनिकोड स्ट्रिंग है, तो आपको उसे स्पष्ट रूप से कनवर्ट करना चाहिए, जब इसे एक तर्क के रूप में देना होगा।
QueryDict ((u'search-search_term = Adam% C3% B3w ')। सांकेतिक शब्दों में कहें (' utf -8 '))
Comments
Post a Comment