LINUX.ORG.RU

несколько вопросов про mono & .NET


0

0

Собрал при помощи mcs простенькую програмку (заменив соответсвующую фразу на "Привет, Мир!" :-)). Она запускается как под Linux, так и пот win32+.NET, НО под win32 сообщение выводится в непонятной кодировке!

Кто-нибудь уже имеет опыт разработки реальных кроссплатформенных приложений на C# с использованием mono?

PS: ASPLinux 11 (cp1251) + mono 1.0

Может, глупый вопрос, но - какая локаль использовалась при _компиляции_ на Mono?

tailgunner ★★★★★
()
Ответ на: комментарий от ushakov

хм... судя по http://www.mono-project.com/Interop_with_Native_Libraries то в mono тоже UTF-16 - "The runtime stores strings as UTF-16-encoded strings..." но для маршалинга строк походу используется utf-8 - "Mono on all platforms currently uses UTF-8 encoding for all string marshaling operations."

user_undefined
()
Ответ на: комментарий от ushakov

> А как mono дать понять что на Linux-платформе нужно работать с cp1251

Попробуй

LC_ALL=ru_RU.cp1251 monoc

(или как там называется компилятор Mono)

tailgunner ★★★★★
()
Ответ на: комментарий от ushakov

> Не помогает - теперь и под Linux что-то непонятное происходит

Значит, двигаешься в правильном направлении :) Но "что-то непонятное" - это не очень понятно ;)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Что-то непонятное это что? скинь сюда то что выдает под линухом З.Ы. почитай все-таки вот это http://msdn2.microsoft.com/en-us/library/ms404377.aspx. Имхо, менять внутреннюю кодировку не есть гуд, хотя я думаю при установке LC_. меняется кодировка ввода/вывода

user_undefined
()
Ответ на: комментарий от ushakov

Кодировки, в которой работает компилятор, и в которой написан исходник, должны совпадать. Кодировка, в которой запускается программа, не должна иметь значения (но должна быть настроена "правильно").

tailgunner ★★★★★
()
Ответ на: комментарий от ushakov

>Насколько я понимаю в обоих системах (в моем случае) - cp1251.

В виндовой консоли по умолчанию действует "OEM" ("ДОСовая") кодировка (866 для русского и некоторых др. языков). Если программа выводят в консоль в UNICODE, то символы, для которых есть соответствие в OEM, напечатаются правильно.

Если хочется, можно установить другую кодировку, например, cp1251:

CHCP 1251

Но тогда в консоли нужно выбрать шрифт с поддержкой UNICODE

zaregazza
()
Ответ на: комментарий от zaregazza

Я имел в виду, что что-то непонятное выводиться. Проблема оказалась в том, что я набирал исходник в кодировке cp1251. Если работать в кодировке UTF-8 - все нормально (исполняться тоже программа должна с локалью UTF-8)

ushakov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.