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.