“Параметр является неправильным” когда установка Unicode как консольное кодирование

Выполните очистку ( shift + cmd + k ) и затем пересоберите проект

6
задан Epaga 7 January 2009 в 07:59
поделиться

3 ответа

Encoding.Unicode - это UTF-16, который использует 2 байта для кодирования всех персонажи. Символы ASCII (английские символы) такие же в UTF-8 (одиночные байты, одинаковые значения), так что, возможно, именно поэтому он работает.

Я предполагаю, что командная оболочка Windows не полностью поддерживает Unicode. Забавно, что графический интерфейс Powershell 2 поддерживает UTF-16 (насколько мне известно), но программа выдает там то же исключение.

Работает следующий код, который показывает, что объект Console может перенаправлять свой вывод и поддерживать Encoding.Unicode:

FileStream testStream = File.Create("test.txt");
TextWriter writer = new StreamWriter(testStream, Encoding.Unicode);
Console.SetOut(writer);            
Console.WriteLine("Hello World: \u263B");  // unicode smiley face
writer.Close(); // flush the output
4
ответ дан 17 December 2019 в 02:34
поделиться

Я думаю, что это имеет отношение CodePage из Encoding Вы используете. В особенности посмотрите Функцию SetConsoleOutputCP. Я не знаю намного больше, извините.

Править: Я сообщил о ссылке на SetConsoleOutputCP потому что эта функция внутренне вызвана (через PInvoke) (операция присвоения) Console.OutputEncoding.

0
ответ дан 17 December 2019 в 02:34
поделиться

Согласно списку идентификаторов кодовых страниц в MSDN , кодировки UTF-16 и UTF-32 доступны только для управления:

1200   utf-16       Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications
1201   unicodeFFFE  Unicode UTF-16, big endian byte order; available only to managed applications
12000  utf-32       Unicode UTF-32, little endian byte order; available only to managed applications
12001  utf-32BE     Unicode UTF-32, big endian byte order; available only to managed applications

Например, они не указаны в реестре вместе с другими системными кодовыми страницами в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage.

2
ответ дан 17 December 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: