Salida de cadena Unicode C #

Tengo una función para convertir una cadena en una cadena Unicode:

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

Pero cuando estoy llamando a esta función, el resultado de salida es incorrecto. Parece que mi función no funciona.

Console.WriteLine(UnicodeString("добры дзень")) imprimiendo en la consola solo preguntas como esa: ????? ???? ????? ????

¿Hay alguna manera de decir a la consola que se muestre correctamente?

ACTUALIZAR

Parece que el problema no está en Unicode. Creo que tal vez muestra signos de interrogación porque no estoy teniendo la configuración regional correcta en el sistema (Windows 7).

¿Hay alguna manera de hacerlo funcionar sin cambiar la configuración regional?

Primero, cambie la encoding de salida a UTF8:

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

Ahora todavía verá signos de interrogación. La razón es que la fuente de la consola predeterminada no admite letras cirílicas . Cambiar la fuente de la consola:

enter image description here

Si tiene suerte, debería encontrar una fuente diferente con soporte Unicode:

enter image description here

Cambia la fuente, y deberías poder ver tu texto:

enter image description here

En el caso general, si desea mostrar todos los caracteres Unicode de manera confiable, la Consola probablemente no sea adecuada para usted. Ver también: fuente de la consola C # (los comentarios también son interesantes)

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

El text cadena ya está en Unicode. Todas las cadenas internas de C # son Unicode. Cuando lo convierte a ASCII, pierde caracteres. Es por eso que tienes ????? ????

Simplemente haga simple Console.WriteLine("добры дзень"); no hay necesidad de ninguna conversión