ошибка CS1012: слишком много символов в символьном литерале - почему он иногда компилируется, а иногда нет

У меня есть этот код:

this.lentry2.InvisibleChar = '●';

он отлично компилируется везде, кроме панели запуска Ubuntu. Когда я строю это там, я получаю эту ошибку CS1012. Почему это работает на любом из моих компьютеров, но не на панели запуска? Действительно ли этот символ не «поддерживается» С#, поэтому мне просто повезло, что он работает на моем ПК, или что-то не так на панели запуска?

вот журнал: https://launchpadlibrarian.net/170375518/buildlog_ubuntu-precise-amd64.pidgeon_1.2.6.0ppa1.1ubuntu1_FAILEDTOBUILD.txt.gz


person Petr    schedule 22.03.2014    source источник


Ответы (1)


Я подозреваю, что все дело в кодировке символов, которую компилятор использует для преобразования вашего файла в текст.

Вы можете указать это в командной строке mcs с параметром -codepage. (Или /codepage в csc.)

В качестве альтернативы, чтобы было проще сделать это правильно везде, сохраните весь свой исходный код в ASCII и используйте escape-последовательность Unicode в символьном литерале, например.

this.lentry2.InvisibleChar = '\u25CF';
person Jon Skeet    schedule 22.03.2014
comment
TBH этот код был сгенерирован monodevelop (у него есть визуальный редактор форм GTK). Может быть, я мог бы сообщить об этом как об ошибке тогда? Если этот код лучше, он, вероятно, также должен быть сгенерирован monodevelop. - person Petr; 22.03.2014
comment
Пробуя ваш код, он возвращает ошибку CS1009: Нераспознанная escape-последовательность `\2'. Я использовал именно эту строку, как вы ее разместили. - person Petr; 22.03.2014