सी # का उपयोग करके, मैं एक .ascx पृष्ठ से TextBox.Text
मान प्राप्त करता हूं। जब मैं LINQ-query के अंदर मान की समानता की नियमित स्ट्रिंग ऑब्जेक्ट की तुलना करता हूं, तो यह हमेशा झूठा होता है।सी # - विभिन्न एन्कोडिंग के तारों की तुलना
मैं इस निष्कर्ष पर आया हूं कि वे अलग-अलग एन्कोड किए गए हैं, लेकिन अब तक उन्हें बदलने या तुलना करने में कोई भाग्य नहीं है।
docname = "Testdoc 1.docx"; //regular string created in C#
fetchedVal = ((TextBox)e.Item.FindControl("txtSelectedDocs")).Text; //UTF-8
उपरोक्त दो तार समान जब शाब्दिक रूप में प्रतिनिधित्व है, लेकिन byte[]
की तुलना में वे स्पष्ट रूप से एन्कोडिंग की वजह से अलग कर रहे हैं।
System.Text.Encoding.Default.GetString(utf8.GetBytes(fetchedVal));
लेकिन यह है कि मूल्य "Testdoc 1.docx"
वापस आ जाएगी:
मैं जैसे अलग अलग बातें, की बहुत कोशिश की है।
अगर मैं बजाय
System.Text.Encoding.Default.GetString(System.Text.Encoding.Default.GetBytes(fetchedVal));
यह रिटर्न "Testdoc 1.docx"
लेकिन एक Equals()
की जाँच करें अभी भी false
रिटर्न का प्रयास करें।
मैं भी निम्नलिखित है, जो दृष्टिकोण की सिफारिश होने लगते हैं की कोशिश की है, लेकिन कोई भाग्य के साथ:
byte[] utf8Bytes = Encoding.UTF8.GetBytes(fetchedVal);
byte[] unicodeBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, utf8Bytes);
string fetchedValConverted = Encoding.Unicode.GetString(unicodeBytes);
अपराधी, खाली स्थान के होने के लिए यह हमेशा सातवें बाइट है जब बाइट क्रम की जांच क्योंकि प्रकट होता है वह अलग है।
सी # में डिफ़ॉल्ट स्ट्रिंग एन्कोडिंग में आप यूटीएफ -8 से ठीक से कैसे परिवर्तित होते हैं?
मुझे यकीन नहीं है कि यहां वास्तव में समस्या क्या है, लेकिन मैं आपको स्ट्रिंग के सामान्यीकृत फ़ंक्शन पर इंगित करना चाहता हूं। यह नहीं पता कि इससे आपकी समस्या ठीक हो जाएगी, लेकिन यह तुलना करने से पहले तारों को सामान्यीकृत करना आपके लिए उपयोगी हो सकता है। http://msdn.microsoft.com/en-us/library/system.string.normalize(v=vs.110).aspx –
@SLaks के उत्तर को देखें, इसे एन्कोडिंग के साथ नहीं करना है। .NET के भीतर, सभी तार बराबर हैं, अर्थात् यूनिकोड यूटीएफ -16 में एन्कोड किया गया है। यहां अपराधी एक गैर-ब्रेकिंग स्पेस है, [ "के बजाय दिखाए गए [एचटीएमएल एन्कोडिंग मुद्दे -" वर्ण देखें (http://stackoverflow.com/questions/1461907/html-encoding-issues-%C3% 82-चरित्र-दिखा-अप-बजाय के- nbsp)। आपके टेक्स्टबॉक्स में यह टेक्स्ट कहां से चिपकाया गया है, और यह कैसे आउटपुट किया जाता है? – CodeCaster
बस @ डेविड्स के जवाब के रूप में, मैंने बिना सफलता के 'सामान्यीकृत' समारोह की खोज की है। @ कोडकस्टर, 'TextBox.Text' JQuery से सेट है। मुझे इस तथ्य से चूक गया कि यह उसके कारण हो सकता है! –