2012-01-27 14 views
5

में सांत्वना आवेदन उत्पादन पर कब्जा मैं एक परीक्षण System.Diagnostics.Process का उपयोग करने में यह चलाकर एक सांत्वना आवेदन से उत्पादन पर कब्जा करने की कोशिश कर रहा हूँ। मुझे चरित्र एन्कोडिंग में परेशानी हो रही है। "£" परीक्षण में "œ" के रूप में दिख रहा है, लेकिन जब मैं कंसोल अनुप्रयोग चलाता हूं तो यह सही रूप से "£" के रूप में प्रदर्शित होता है।एन्कोडिंग मुद्दा जब एक परीक्षण

अगर मैं Console.Out.Encoding = Encoding.Default निर्धारित करते हैं, यह परीक्षण में काम करता है, लेकिन ठीक से प्रदर्शित नहीं करता है जब सामान्य रूप से चल रहा है।

यहां क्या हो रहा है और मैं इसे कैसे ठीक कर सकता हूं?

+0

आप अपने परीक्षण धावक से अपना कंसोल ऐप कैसे चला रहे हैं? – wal

उत्तर

4

आप अपने परीक्षण के मामले में अपने ProcessStartInfo वस्तु पर StandardOutputEncoding निर्धारित करने की आवश्यकता:

var process = new Process(); 
var startInfo = new ProcessStartInfo(@"yourapp.exe"); 
startInfo.StandardOutputEncoding = Encoding.GetEncoding(850); 

आप

Console.WriteLine(Console.Out.Encoding.CodePage); 

जो 850 रिटर्न चलाकर क्या codepage आप अपने कंसोल अनुप्रयोग में उपयोग कर रहे हैं पा सकते हैं (पश्चिमी यूरोपीय डॉस)

आप BodyName संपत्ति का उपयोग GetEncoding पर एक तर्क के रूप में भी कर सकते हैं है:

startInfo.StandardOutputEncoding = Encoding.GetEncoding("ibm850"); 
+0

मैं इस मुद्दे पर आया हूँ। मैं आउटपुट को एक फाइल में रीडायरेक्ट कर रहा हूं और एक सेमीड प्रॉम्प्ट से चल रहा हूं लेकिन मैं आउटपुट को यूटीएफ -8 में एन्कोडेड करना चाहता हूं। क्या इसे कमांड विंडो में सेट करने का कोई तरीका है? क्योंकि मैं एक और सी # आवेदन के माध्यम से प्रक्रिया शुरू नहीं कर रहा हूँ। धन्यवाद –

+1

@ChrisWalsh http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how देखें? 'chcp 65001' – wal

0

मुझे लगता है कि आप सही रास्ते पर हैं। जब एक सांत्वना आवेदन यह आउटपुट के रूप में चलाने

Console.WriteLine(Encoding.Default.EncodingName);   
Console.WriteLine(Console.Out.Encoding.EncodingName); 

: एक परीक्षण के रूप में मैं इस कोड निष्पादित

Western European (Windows) 
OEM United States 

जब एक विंडोज़ अनुप्रयोग यह आउटपुट के रूप में चलाने:

Western European (Windows) 
Western European (Windows) 

मुझे संदेह है कि परीक्षण धावक से कंसोल आउटपुट से पढ़ने पर आपको आउटपुट में लिखे गए एन्कोडिंग से मेल खाने के लिए अपने पाठक के एन्कोडिंग को सेट करना होगा, शायद पश्चिमी यूरोपीय (विंडोज़), हालांकि मैं नहीं जानता ज़रूर।

संबंधित मुद्दे