Кодировка GetCommandLine
От: Ka3a4oK  
Дата: 11.08.10 10:17
Оценка:
Вот такой код по-разному ведет себя, если его запустить из-под отладчика и без отладки.

WriteLine(Environment.GetCommandLine()[1]);


Если в качестве первого параметра указать строку состоящую из кириллицы, то под отладчиком — все правильно считывается и выводится. Если запустить без отладки — то выводится мусор. При этом судя по-всему дело не в выводе, а именно в воде. Проверял под C# — в обоих случаях все вводится и выводится нормально.
Re: Кодировка GetCommandLine
От: _nn_ www.nemerleweb.com
Дата: 11.08.10 15:52
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>Вот такой код по-разному ведет себя, если его запустить из-под отладчика и без отладки.


KK>
KK>WriteLine(Environment.GetCommandLine()[1]);
KK>


Имелось ввиду Environment.GetCommandLineArgs ?

KK>Если в качестве первого параметра указать строку состоящую из кириллицы, то под отладчиком — все правильно считывается и выводится. Если запустить без отладки — то выводится мусор. При этом судя по-всему дело не в выводе, а именно в воде. Проверял под C# — в обоих случаях все вводится и выводится нормально.


У меня не проявляется.
А какая локаль в системе стоит ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Кодировка GetCommandLine
От: Аноним  
Дата: 12.08.10 09:08
Оценка:
__>У меня не проявляется.
__>А какая локаль в системе стоит ?

Везде стоит русский. Тем более в C# данный код работает нормально.
Re[3]: Кодировка GetCommandLine
От: _nn_ www.nemerleweb.com
Дата: 12.08.10 09:23
Оценка:
Здравствуйте, Аноним, Вы писали:

__>>У меня не проявляется.

__>>А какая локаль в системе стоит ?

А>Везде стоит русский. Тем более в C# данный код работает нормально.


А если вывести в MessageBox то нормально пишет ?

Другой возможный вариант проверки, запустить вручную через Process.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: Кодировка GetCommandLine
От: Ka3a4oK  
Дата: 12.08.10 10:59
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Аноним, Вы писали:


__>>>У меня не проявляется.

__>>>А какая локаль в системе стоит ?

А>>Везде стоит русский. Тем более в C# данный код работает нормально.


__>А если вывести в MessageBox то нормально пишет ?


__>Другой возможный вариант проверки, запустить вручную через Process.


WindowApplication работает нормально. Консольное приложение, запущенное из под отладчика(пункт меню Debug), либо запущенное из командной строки так же работает нормально. Но если запустить консольное приложение запущенное с помощью пункта меню Start without debug работает с ошибкой.
Re[5]: Кодировка GetCommandLine
От: _nn_ www.nemerleweb.com
Дата: 12.08.10 11:30
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>WindowApplication работает нормально. Консольное приложение, запущенное из под отладчика(пункт меню Debug), либо запущенное из командной строки так же работает нормально. Но если запустить консольное приложение запущенное с помощью пункта меню Start without debug работает с ошибкой.


Теперь проявилось.

Процесс запускается неправильно (проверенно через process explorer):

Аргументы: абвгд

А вот строка запуска из студии:

"c:\test\nc\bin\Debug\nc.exe" ¦-¦-¦-¦¦¦+


Судя по всему баг интеграции.
Подозреваю происходит конвертирование строки перед вызовом консольной программы.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: Кодировка GetCommandLine
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.08.10 00:05
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>WindowApplication работает нормально. Консольное приложение, запущенное из под отладчика(пункт меню Debug), либо запущенное из командной строки так же работает нормально. Но если запустить консольное приложение запущенное с помощью пункта меню Start without debug работает с ошибкой.


Пишите баг-репорт. Там батник создается и запускается. Видимо что-то не так с локалями при запуске процессов...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Кодировка GetCommandLine
От: Ka3a4oK  
Дата: 18.08.10 16:23
Оценка:
VD>Пишите баг-репорт. Там батник создается и запускается. Видимо что-то не так с локалями при запуске процессов...

Написал.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.