Konsola Unicode karakterler nasıl yazılır?


150

Bir konsol uygulamasında .NET gibi karakterler yazmanın mümkün olup olmadığını merak ediyordum . Bu karakteri yazmaya çalıştığımda, konsol bir soru işareti çıkarıyor.

Yanıtlar:


201

Çıktı kodlamanız ASCII olarak ayarlanmış olabilir. Çıktı göndermeden önce bunu kullanmayı deneyin:

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

(MSDN , destekleyici belgelere bağlantı .)

İşte kullanışlı bulabileceğiniz küçük bir konsol test uygulaması:

C #

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

Konsol yazı tipi seçiminiz bu karakteri desteklemiyor olabilir. Windows Araç Çubuğu Menüsü'nü (C: gibi bir simge) tıklayın ve Özellikler -> Yazı Tipi'ni seçin. Karakterinizin düzgün görüntülenip görüntülenmediğini görmek için başka yazı tiplerini deneyin:

konsol yazı tipi resmi düzenleme


3
Console.OutputEncodingEncoding.Unicode(UTF-16) olarak ayarlanamaz . Encoding.UTF8ancak mümkündür.
Saeb Amini

3
.NET 4.5 ve sonraki sürümlerinde UTF-16 da desteklenir
Sami Kuhmonen

4
hm, bu benim için işe yaramıyor. Hintçe veya Korece yazdırmaya çalışıyorum ve hiç şans yok
Quincy

1
Yazı tipleri arasında geçiş yaptıktan sonra efekti görmek için uygulamayı yeniden başlatmanız gerekebilir.
Mike Keskinov

2
@Cel: NSimSun'un Çince ve Japonca (ve İngilizce) için çalıştığını gördüm.
kjhughes

11

MSDN'de zarif bir çözüm buldum

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

Bu basit program ℃ doğrudan ekrana yazar.

using System;

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

2
Gerçekten temiz! Ancak kabul edilen cevabın hala geçerli olduğunu düşünüyorum - konsolun kullandığı font unicode karakterleri desteklemiyorsa, bu örneğin işe yaramayacağına inanıyorum. Ancak şu anda bir Windows bilgisayara erişimim olmadığından bunu kontrol edemiyorum.
Sam

Evet, Sam'in doğru olduğuna inanıyorum. Örneğin, komut istemi yazı tiplerinin karakter setimi desteklememesi nedeniyle sıkışmıştım.
Veverke


8

dışında Console.OutputEncoding = System.Text.Encoding.UTF8;

bazı karakterler için ek yazı tipleri (örn. Çince) yüklemeniz gerekir.

In Windows 10'a birinci gidin Bölge ve dil ayarları ve gerekli dil için destek yükleyin: resim açıklamasını buraya girin

Bundan sonra Komut İstemi Oranlarına (veya isterseniz Varsayılanlara) gidebilir ve dilinizi destekleyen bir yazı tipi seçebilirsiniz ( Çince durumda KaiTi gibi ): resim açıklamasını buraya girin

Şimdi gitmeye hazırsınız: resim açıklamasını buraya girin


çok teşekkürler. Konsolu Yazı Tipi Değiştir benim için bir düzeltme :) (Ayrıca konsol çıkışı UTF-8 kullanmak için koymak)
Franva

0

Bu benim için çalışıyor:

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

Bazı sembolleri görüntülemek için Komut İstemi'nin yazı tipini Lucida Konsolu olarak ayarlamak gerekir:

  1. Açık Komut İstemi;

  2. Komut İstemi'nin üst çubuğuna sağ tıklayın;

  3. Özellikler'i tıklayın;

  4. Yazı tipi Raster Yazı Tipleri olarak ayarlanmışsa, Lucida Konsolu olarak değiştirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.