C # Unicode-String-Ausgabe

Ich habe eine function, um eine Zeichenfolge in eine Unicode-Zeichenfolge zu konvertieren:

private string UnicodeString(string text) { return Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(text)); } 

Aber wenn ich diese function anrufe, ist das Ausgabeergebnis falsch. Es sieht so aus, als ob meine function nicht funktioniert.

Console.WriteLine(UnicodeString("добры дзень")) Drucken auf der Konsole nur ????? ???? Fragen: ????? ???? ????? ????

Gibt es eine Möglichkeit zu sagen, um es richtig zu trösten?

AKTUALISIEREN

Es sieht aus wie das Problem nicht in Unicode. Ich denke, dass es vielleicht Fragezeichen anzeigt, weil ich nicht das richtige Gebietsschema im System habe (Windows 7)?

Gibt es eine Möglichkeit, es ohne Änderung des Gebiets zu funktionieren?

Ändern Sie zuerst die Ausgabecodierung in UTF8:

 Console.OutputEncoding = Encoding.UTF8; Console.WriteLine("добры дзень"); 

Jetzt sehen Sie immer noch Fragezeichen. Der Grund dafür ist, dass die Schriftart der Standardkonsole keine kyrillischen Buchstaben unterstützt . Ändern Sie die Schriftart der Konsole:

Bildbeschreibung hier eingeben

Wenn Sie Glück haben, sollten Sie eine andere Schriftart mit Unicode-Unterstützung finden:

Bildbeschreibung hier eingeben

Ändern Sie die Schriftart, und Sie sollten Ihren Text sehen können:

Bildbeschreibung hier eingeben

Im Allgemeinen, wenn Sie alle Unicode-Zeichen zuverlässig anzeigen möchten, ist die Konsole wahrscheinlich nicht richtig für Sie. Siehe auch: C # Console Font (die Kommentare sind auch interessant)

 private string UnicodeString(string text) { return text; } 

Der text Zeichenfolge ist bereits in Unicode. Alle internen C # -Zeichenfolgen sind Unicode. Wenn Sie es in ASCII konvertieren, verlieren Sie Zeichen. Deshalb bekommst du ????? ????.

Mach einfach einfache Console.WriteLine("добры дзень"); keine Notwendigkeit für eine Konvertierung.