2010-02-06 13 views
7

में वियतनामी चरित्र मैं सी # कंसोल में यूटीएफ -8 स्ट्रिंग (वियतनामी) लिखने की कोशिश कर रहा हूं लेकिन कोई सफलता नहीं। मैं Windows 7..NET कंसोल एप्लिकेशन (यूटीएफ -8)

पर चल रहा हूँ मैं Encoding वर्ग कि char[]byte[] के लिए और फिर करने के लिए string परिवर्तित स्ट्रिंग के लिए उपयोग करने के लिए कोशिश की, लेकिन कोई मदद नहीं, स्ट्रिंग डेटाबेस से सीधे इनपुट है।

यहां कुछ उदाहरण

Tôi tên là Đức, cuộc गाना था जिसने VUI ve tuyệt vời

यह Đ या की तरह विशेष वर्ण प्रदर्शित नहीं करता है ... बजाय यह शो है ?, एन्कोडिंग कक्षा से भी बदतर है।

क्या कोई इस समस्या को आजमा सकता है या पता कर सकता है?


मेरे कोड

static void Main(string[] args) 
{ 
    XDataContext _new = new XDataContext(); 
    Console.OutputEncoding = Encoding.GetEncoding("UTF-8"); 
    string srcString = _new.Posts.First().TITLE; 

    Console.WriteLine(srcString); 
    // Convert the UTF-16 encoded source string to UTF-8 and ASCII. 
    byte[] utf8String = Encoding.UTF8.GetBytes(srcString); 
    byte[] asciiString = Encoding.ASCII.GetBytes(srcString); 

    // Write the UTF-8 and ASCII encoded byte arrays. 
    Console.WriteLine("UTF-8 Bytes: {0}", BitConverter.ToString(utf8String)); 
    Console.WriteLine("ASCII Bytes: {0}", BitConverter.ToString(asciiString)); 


    // Convert UTF-8 and ASCII encoded bytes back to UTF-16 encoded 
    // string and write. 
    Console.WriteLine("UTF-8 Text : {0}", Encoding.UTF8.GetString(utf8String)); 
    Console.WriteLine("ASCII Text : {0}", Encoding.ASCII.GetString(asciiString)); 

    Console.WriteLine(Encoding.UTF8.GetString(utf8String)); 
    Console.WriteLine(Encoding.ASCII.GetString(asciiString)); 
} 

और यहाँ बकाया उत्पादन

Nhà báo đi hội báo Xuân 
UTF-8 Bytes: 4E-68-C3-A0-20-62-C3-A1-6F-20-C4-91-69-20-68-E1-BB-99-69-20-62-C3- 
A1-6F-20-58-75-C3-A2-6E 
ASCII Bytes: 4E-68-3F-20-62-3F-6F-20-3F-69-20-68-3F-69-20-62-3F-6F-20-58-75-3F- 
6E 
UTF-8 Text : Nhà báo đi hội báo Xuân 
ASCII Text : Nh? b?o ?i h?i b?o Xu?n 
Nhà báo đi hội báo Xuân 
Nh? b?o ?i h?i b?o Xu?n 


Press any key to continue . . . 
+1

UTF8 करने के लिए आउटपुट एन्कोडिंग स्थापना काम करना चाहिए: 'Console.OutputEncoding = Encoding.UTF8 '। क्या आप सुनिश्चित हैं कि समस्या डेटाबेस से पाठ को पढ़ने के तरीके से नहीं है? यदि आप अपने कोड में ब्रेकपॉइंट डालते हैं, तो क्या 'srcString' सही ढंग से एन्कोड किया गया है? –

+0

हां, ब्रेकपॉइंट आउटपुट 100% ठीक है। मैं विंडोज़ फॉर्म में जाने पर विचार कर रहा हूं लेकिन मुझे इस मामले में उस फैंसी फीचर की ज़रूरत नहीं है। :(Winconsole – DucDigital

उत्तर

7
class Program 
{ 
    [DllImport("kernel32.dll")] 
    static extern bool SetConsoleOutputCP(uint wCodePageID); 

    static void Main(string[] args) 
    { 
     SetConsoleOutputCP(65001); 
     Console.OutputEncoding = Encoding.UTF8; 
     Console.WriteLine("tést, тест, τεστ, ←↑→↓∏∑√∞①②③④, Bài viết chọn lọc"); 
     Console.ReadLine(); 
    } 
} 

स्क्रीनशॉट (उपयोग Consolas या सब से ऊपर कैरेक्टर हैं कि एक और फ़ॉन्ट):

proof

+1

फ़ॉन्ट महत्वपूर्ण है। मैंने कोड की कोशिश की और मुझे पहले कचरा एन्कोडिंग मिली, इसलिए मुझे एक फ़ॉन्ट स्विच करने की उम्मीद नहीं थी, लेकिन ऐसा हुआ। – Timwi

+1

यह वास्तव में काम कर रहा है। धन्यवाद romkyns – DucDigital

+0

ऐसा लगता है कि 'SetConsoleOutputCP' अब काम करने के लिए आवश्यक नहीं है - शायद ढांचे में कुछ ठीक हो गया है। –

0

UTF-8 मैच के लिए Console.OutputEncoding स्थापित करने के लिए आप की आवश्यकता होगी है।

शायद की तरह कुछ:

Console.OutputEncoding = System.Text.Encoding.UTF8; 
+1

के लिए बहुत बुरा मैंने उदाहरण जोड़ा है। यह बिल्कुल कंसोल नहीं कर रहा है, मेरा कंसोल। आउटपुट एन्कोडिंग थोड़ा अलग है लेकिन यह वही काम करता है। मैंने तुम्हारा भी प्रयास किया, अभी भी वही – DucDigital

0

आप कंसोल विंडो में उपयोग करें फ़ॉन्ट पात्रों आप प्रदर्शित करने के लिए कोशिश कर रहे हैं समर्थन करता है?

+1

मैंने सेट नहीं किया फ़ॉन्ट, लेकिन यह सीम लुइसिडा यूटीएफ 8 नहीं दिखा सकता है? वैसे भी मैं इसे सी #? – DucDigital

-2

यह cmd.exe कंसोल के साथ समस्या है। यह यूनिकोड का समर्थन नहीं करता है। [सी #/.NET के साथ कुछ भी नहीं]

यदि आप फ़ाइल को लिख या लिख ​​सकते हैं तो इसे एक जीयूआई ऐप में बदलने का प्रयास करें। उत्पादन का

+3

-1 के साथ ऑन-द-फ्लाई बदल सकता हूं: कंसोल पूरी तरह से यूनिकोड-जागरूक है। –

+0

लेकिन इसमें केवल सीमित फ़ॉन्ट समर्थन हैं। उदाहरण के लिए मैं तमिल में आउटपुट नहीं कर सकता, हालांकि मेरे पास ओएस में उस भाषा के लिए यूनिकोड फोंट हैं। यही मेरा मतलब है कि यूनिकोड का समर्थन नहीं करता है। – Fakrudeen

+0

मुझे लगता है कि यह केवल मोनोस्पेस्ड फोंट का समर्थन करता है, और शायद (सुनिश्चित नहीं है!) सही ढंग से दाएं से बाएं नहीं करता है, लेकिन यदि आप तमिल पात्रों के साथ एक मोनोस्पेस्ड फ़ॉन्ट पाते हैं तो यह तमिल करने में सक्षम होना चाहिए। मैंने देजावु की कोशिश की और ऐसा प्रतीत नहीं होता है। –

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