Чтение юникода с консоли

Я пытаюсь прочитать строку Unicode из консоли в C #, например, давайте использовать его:

C: \ SVN \ D³ebugger \ SRC \ виталик \ Program.cs

Сначала я просто пыталсяConsole.ReadLine() который вернул меняc:\SVN\D3ebugger\src\???????\Program.cs

Я пытался установить Console.InputEncoding в UTF8, например,Console.InputEncoding = Encoding.UTF8 но это вернуло меняc:\SVN\D³ebugger\src\???????\Program.csв основном портит кириллическую часть строки.

Так случайно спотыкаясь, я пытался установить кодировку таким образом,Console.InputEncoding = Encoding.GetEncoding(1251); который вернулсяc:\SVN\D?ebugger\src\виталик\Program.csНа этот раз искажает символ ³.

На данный момент кажется, что путем переключениякодировок для InputStream я могу получить только один язык за раз.

Я также попытался перейти на родной язык и сделать что-то подобное:

// Code
public static string ReadLine()
{
    const uint nNumberOfCharsToRead = 1024;
    StringBuilder buffer = new StringBuilder();

    uint charsRead = 0;
    bool result = ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), buffer, nNumberOfCharsToRead, out charsRead, (IntPtr)0);

    // Return the input minus the newline character
    if (result && charsRead > 1) return buffer.ToString(0, (int)charsRead - 1);
    return string.Empty;
}

// Extern definitions

    [DllImport("Kernel32.DLL", ExactSpelling = true)]
    internal static extern IntPtr GetStdHandle(int nStdHandle);

    [DllImport("kernel32.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
    static extern bool ReadConsoleW(IntPtr hConsoleInput, [Out] StringBuilder lpBuffer, 
        uint nNumberOfCharsToRead, out uint lpNumberOfCharsRead, IntPtr lpReserved);

Это работало нормально для строк, не относящихся к юникоду, однако, когда я попытался заставить его прочитать мою примерную строку, приложение зависло. Я пытался сказать Visual Studio, чтобы она работала на ВСЕХ исключениях (включая нативные), но приложение все равно зависало.

Я также нашелэто открытая ошибка в Microsoft Connect, которая, кажется, говорит о том, что сейчас невозможно прочитать Unicode из консоли InputStream.

Стоит отметить, хотя Console.WriteLine, хотя и не строго связан с моим вопросом, может нормально печатать эту строку, если для Console.OutputEncoding задано значение UTF8.

Спасибо!

Обновление 1

Я ищу решение для .NET 3.5

Обновление 2

Обновлено с полным нативным кодом, который я использовал.

Ответы на вопрос(2)

Ваш ответ на вопрос