अगर आपको ऐसी नीतियां मिलेंगी तो यह समझदार लगेगा कि आप टीम मानक मानक एन्कोडिंग पर भी सहमत होंगे। ईमानदार होने के लिए, मैं नहीं देख सकता कि कोई भी टीम "यूनिकोड (यूटीएफ -8 हस्ताक्षर के साथ) के अलावा एन्कोडिंग का उपयोग क्यों करेगी - कोडपेज 65001" (शायद गैर-लैटिन स्थैतिक सामग्री वाले एएसपीएक्स पृष्ठों के अलावा, लेकिन फिर भी मैं कर सकता हूं ' टी देखें कि यूटीएफ -8 का उपयोग करने के लिए यह एक बड़ा सौदा होगा)।
मान लीजिए कि आप अभी भी मिश्रित एन्कोडिंग की अनुमति देना चाहते हैं तो आपको यह निर्धारित करने के लिए एक तरीका चाहिए कि फ़ाइल को कौन सी एन्कोडिंग सहेजी गई थी ताकि आपको पता चल सके कि कौन सी एन्कोडिंग ReadAllText
पर गुजरती है। फ़ाइल से इसे निर्धारित करना आसान नहीं है, हालांकि Encoding.Default
का उपयोग ठीक से काम करने की संभावना है। चूंकि इसकी संभावना है कि आपके पास केवल 2 एन्कोडिंग हैं, वीएस (हस्ताक्षर के साथ यूटीएफ -8) और आपके द्वारा उपयोग की जाने वाली एक आम एएनएसआई एन्कोडिंग (संभवतः विंडोज -1252)।
इसलिए
string content = File.ReadAllText(pendingChange.LocalItem, Encoding.Default);
का उपयोग कर काम करेंगे। (जैसा कि मैंने देखा कि जॉन पहले ही पोस्ट कर चुका है)। यह काम करता है क्योंकि जब यूटीएफ -8 बीओएम (जिसे "हस्ताक्षर" शब्द से वीएस का अर्थ है) फ़ाइल की शुरुआत में मौजूद है, तो आपूर्ति किए गए एन्कोडिंग पैरामीटर को अनदेखा किया जाता है और यूटीएफ -8 का उपयोग वैसे भी किया जाता है। इसलिए जहां यूटीएफ -8 का उपयोग करके फ़ाइल सहेजी जाती है, आपको सही परिणाम मिलते हैं और जहां एएनएसआई का उपयोग किया जाता है, आपको सबसे अच्छे परिणाम भी मिलते हैं।
बीटीडब्ल्यू यदि आप फ़ाइल शीर्षलेख संसाधित कर रहे हैं तो ReadAllLines
चीजों को आसान नहीं बनायेगा?
क्या आप अभी भी फाइल हेडर का उपयोग कर रहे हैं? वे कम मूल्य की प्रतीत होते हैं ... –
@ मिच: स्रोत कोड में कॉपीराइट जानकारी ले जाने के बजाय आप क्या अनुशंसा करेंगे? – AnthonyWJones
यह तय करने का हमारा नहीं है, यह कंपनी नीति है। – Enyra