कंसोल में यूनिकोड वर्ण कैसे लिखें?


150

मैं सोच रहा था कि क्या यह संभव है, एक सांत्वना अनुप्रयोग में, .NET का उपयोग कर वर्ण लिखने के लिए । जब मैं इस चरित्र को लिखने की कोशिश करता हूं, तो कंसोल एक प्रश्न चिह्न का उत्पादन करता है।

जवाबों:


201

यह संभावना है कि आपका आउटपुट एन्कोडिंग ASCII पर सेट है। आउटपुट भेजने से पहले इसका उपयोग करने का प्रयास करें:

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

(MSDN सहायक प्रलेखन के लिए लिंक ।)

और यहाँ एक छोटा सा कंसोल टेस्ट ऐप है जो आपको उपयोगी लग सकता है:

सी#

using System;
using System.Text;

public static class ConsoleOutputTest {
    public static void Main() {
        Console.OutputEncoding = System.Text.Encoding.UTF8;
        for (var i = 0; i <= 1000; i++) {
            Console.Write(Strings.ChrW(i));
            if (i % 50 == 0) { // break every 50 chars
                Console.WriteLine();
            }
        }
        Console.ReadKey();
    }
}

VB.NET

imports Microsoft.VisualBasic
imports System

public module ConsoleOutputTest 
    Sub Main()
        Console.OutputEncoding = System.Text.Encoding.UTF8
        dim i as integer
        for i = 0 to 1000
            Console.Write(ChrW(i))
            if i mod 50 = 0 'break every 50 chars 
                Console.WriteLine()
            end if
        next
    Console.ReadKey()
    End Sub
end module

यह भी संभव है कि कंसोल कंसोल की आपकी पसंद उस विशेष चरित्र का समर्थन नहीं करती है। विंडोज टूल-बार मेनू (C: जैसे आइकन) पर क्लिक करें और गुण -> फ़ॉन्ट चुनें। यह देखने के लिए कुछ अन्य फ़ॉन्ट आज़माएं कि क्या वे आपके चरित्र को ठीक से प्रदर्शित करते हैं:

कंसोल फॉन्ट की तस्वीर


3
Console.OutputEncodingसेट नहीं किया जा सकता Encoding.Unicode(UTF-16)। Encoding.UTF8, हालांकि, संभव है।
साब अमीनी

3
.NET 4.5 और बाद में भी UTF-16 समर्थित है
सामी कुहोमेन

4
हम्म, यह मेरे लिए काम नहीं करता है। मैं हिंदी प्रिंट या कोरियाई और कोई किस्मत कोशिश कर रहा हूँ
क्विंसी

1
फोंट के बीच स्विच करने के बाद प्रभाव देखने के लिए आपको एप्लिकेशन को पुनरारंभ करने की आवश्यकता हो सकती है।
माइक केसिनकोव

2
@Cel: मैंने पाया है कि NSimSun चीनी और जापानी (साथ ही अंग्रेजी) के लिए काम करता है।
kjhughes

11

मुझे MSDN पर कुछ सुरुचिपूर्ण समाधान मिला

System.Console.Write('\uXXXX') //XXXX is hex Unicode for character

यह सरल कार्यक्रम स्क्रीन पर ℃ सही लिखता है।

using System;

public class Test
{
    public static void Main()
    {
        Console.Write('\u2103'); //℃ character code
    }
}

2
यह वास्तव में साफ है! हालाँकि मुझे लगता है कि स्वीकृत उत्तर अभी भी लागू होता है - यदि कंसोल जिस फ़ॉन्ट का उपयोग कर रहा है वह यूनिकोड वर्णों का समर्थन नहीं करता है, मेरा मानना ​​है कि यह उदाहरण काम नहीं करेगा। हालाँकि, मैं इसकी जाँच नहीं कर सकता, क्योंकि मेरे पास इस समय विंडोज कंप्यूटर का उपयोग नहीं है।
सैम

मेरा मानना ​​है कि सैम सही है। मैं उदाहरण के लिए इस तथ्य में फंस गया था कि कमांड प्रॉम्प्ट फोंट ने मेरे चरित्र सेट का समर्थन नहीं किया था।
विवेचक

9

Console.OutputEncoding संपत्ति

http://msdn.microsoft.com/library/system.console.outputencoding(v=vs.110).aspx

ध्यान दें कि कंसोल में यूनिकोड वर्णों को सफलतापूर्वक प्रदर्शित करने के लिए निम्नलिखित की आवश्यकता होती है:

  • वर्णों को प्रदर्शित करने के लिए कंसोल को ट्रू टाइप फ़ॉन्ट का उपयोग करना चाहिए, जैसे कि ल्यूसिडा कंसोल या कंसोल

8

के अतिरिक्त Console.OutputEncoding = System.Text.Encoding.UTF8;

कुछ वर्णों के लिए आपको अतिरिक्त फोंट (यानी चीनी) स्थापित करने की आवश्यकता है।

में Windows 10 पहले करने के लिए जाना क्षेत्र व भाषा सेटिंग्स और आवश्यक भाषा के लिए समर्थन स्थापित: यहाँ छवि विवरण दर्ज करें

उसके बाद आप कमांड प्रॉम्प्ट प्रॉस्पेक्ट्स (या यदि आप चाहें तो डिफॉल्ट्स ) पर जा सकते हैं और अपनी भाषा का समर्थन करने वाले कुछ फ़ॉन्ट चुनें (जैसे चीनी मामले में काईटीआई ): यहाँ छवि विवरण दर्ज करें

अब आप जाने के लिए तैयार हैं: यहाँ छवि विवरण दर्ज करें


बहुत बहुत धन्यवाद। कंसोल कंसोल बदलें मेरे लिए ठीक है :) (इसके अलावा UTF-8 का उपयोग करने के लिए कंसोल को सेट करें)
Franva

0

यह मेरे लिए काम करता है:

Console.OutputEncoding = System.Text.Encoding.Default;

कुछ प्रतीकों को प्रदर्शित करने के लिए, कमांड प्रॉम्प्ट के फॉन्ट को Lucida Console में सेट करना आवश्यक है:

  1. ओपन कमांड प्रॉम्प्ट;

  2. कमांड प्रॉम्प्ट के शीर्ष बार पर राइट क्लिक करें;

  3. गुण क्लिक करें;

  4. यदि फ़ॉन्ट Raster फ़ॉन्ट्स पर सेट है, तो इसे Lucida Console में बदलें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.