के साथ यूनिक्स एन्कोडेड फ़ाइल पढ़ें मेरे पास सी # प्रोग्राम है जिसे हम कुछ मानों को प्रतिस्थापित करने के लिए उपयोग करते हैं, पैरामीटर के बाद उपयोग किए जाने के लिए। 'NAME1' की तरह & 1, & 2 के साथ 'NAME2' के साथ प्रतिस्थापित किया गया है, और इसी तरह।सी #
समस्या यह है कि संशोधित करने वाला डेटा यूनिक्स पर एन्कोड किए गए टेक्स्ट फ़ाइल पर है, और विशेष वर्ण जैसे í, जो स्मृति पर भी, वर्ग (अमान्य चार) के रूप में पढ़ा जाता है। मेरे नियंत्रण से बाहर होने वाले विनिर्देशों के कारण, फ़ाइल को बदला नहीं जा सकता है और इसे पढ़ने के अलावा कोई अन्य विकल्प नहीं है।
मैं के साथ 130 एन्कोडिंग सी # के सबसे मेरे साथ प्रदान करता है पढ़ने के लिए tryed है:
EncodingInfo[] info = System.Text.Encoding.GetEncodings();
string text;
for (int a = 0; a < info.Length; ++a)
{
text = File.ReadAllText(fn, info[a].GetEncoding());
File.WriteAllText(fn + a, text, info[a].GetEncoding());
}
fn फ़ाइल पथ को पढ़ने के लिए है। सभी बनाई गई फ़ाइलों (जैसे 130) की जांच की है, उनमें से कोई भी सही ढंग से लिखता है, इसलिए मैं विचारों से बाहर हूं और इंटरनेट पर कुछ भी ढूंढने में असमर्थ हूं।
समाधान:
ऐसा लगता है कि अंत में इस कोड को काम किए गए पाठ ठीक से प्राप्त करने के लिए, यह भी, लेखन भाग के लिए एक ही एनकोडर ठीक करने के लिए किया था:
System.Text.Encoding encoding = System.Text.Encoding.GetEncodings()[41].GetEncoding();
String text = File.ReadAllText(fn, encoding); // get file text
// DO ALL THE STUFF I HAD TO
File.WriteAllText(fn, text, encoding) System.Text.Encoding.GetEncodings()[115].GetEncoding(); //Latin 9 (ISO)
/* ALL THIS ENCODINGS WORKED APARENTLY FOR ME WITH ALL WEIRD CHARS I WAS ABLE TO WRITE :P
System.Text.Encoding.GetEncodings()[108].GetEncoding(); //Baltic (ISO)
System.Text.Encoding.GetEncodings()[107].GetEncoding(); //Latin 3 (ISO)
System.Text.Encoding.GetEncodings()[106].GetEncoding(); //Central European (ISO)
System.Text.Encoding.GetEncodings()[105].GetEncoding(); //Western European (ISO)
System.Text.Encoding.GetEncodings()[49].GetEncoding(); //Vietnamese (Windows)
System.Text.Encoding.GetEncodings()[45].GetEncoding(); //Turkish (Windows)
System.Text.Encoding.GetEncodings()[41].GetEncoding(); //Central European (Windows) <-- Used this one
*/
आप अपने लिए बहुत-बहुत धन्यवाद मदद
नोमान (1)
क्या एन्कोडिंग फ़ाइल में लिखा गया था? यह जानने के बिना, आपको बस अनुमान लगाना है। यह यूनिक्स मशीन पर है अप्रासंगिक है। स्वचालित अनुमान लगाने के लिए – Oded
+1 !, लेकिन अब आपको पता लगाने के लिए अपने स्रोत पर वापस जाना होगा, क्योंकि ओडेड कहता है, 'फ़ाइल को कौन सी एन्कोडिंग लिखा गया था?'। सौभाग्य! खेद – shellter
इम बताने के लिए है कि मैं स्रोत पता नहीं कर सकते, केवल मुझे पता है कि पर नोटपैड यूनिक्स एएनएसआई के रूप में तल पर चिह्नित है, यह एक बल्ला जो MyFile.txt [* साथ somefiles] कॉपी करता है से बनाया गया है। मैं मान उनमें से ज्यादातर ओरेकल से या एक एक्सेल स्क्रिप्ट –