Какой набор символов выбрать при компиляции c++ dll

Может ли кто-нибудь дать некоторую информацию о различных наборах символов в листах свойств проекта Visual Studio.

Возможные варианты:
Нет
Юникод
Многобайтовый

Я хотел бы принять взвешенное решение о том, что выбрать.
Спасибо.


person Adam Naylor    schedule 19.01.2009    source источник


Ответы (3)


Все новое программное обеспечение должно поддерживать Unicode. Для приложений Windows это означает набор символов UTF-16, и почти для всех остальных UTF-8 часто является лучшим выбором. Другие варианты набора символов в программировании для Windows следует использовать только для совместимости со старыми приложениями. Они не поддерживают тот же диапазон символов, что и Unicode.

person Mr. Shiny and New 安宇    schedule 19.01.2009

Multibyte занимает ровно 2 байта на символ, none ровно 1, unicode варьируется.

None не подходит, так как не поддерживает нелатинские символы. Очень скучно, если какой-то пользователь, не владеющий английским языком, пытается ввести свое имя в поле редактирования. Не используйте none.

Если вы не используете собственное вычисление длин строк, с точки зрения программиста multibyte и unicode не отличаются, пока вы используете макрос TEXT для переноса ваших строковых констант.

Некоторые библиотеки явно требуют определенной кодировки (DirectShow и т. д.), просто используйте то, что они хотят.

person Quassnoi    schedule 19.01.2009
comment
Что ж, двойной байт занимает ровно 2. Многобайтовый код, отличный от Unicode, занимает 1 или 2 байта на символ. - person KJAWolf; 20.01.2009
comment
Согласен с KJAWolf; Юникод означает UTF-16, который составляет ровно 2 байта. Мультибайт, например. Shift-JIS, и в этом случае подмножество ASCII по-прежнему составляет 1 символ на символ. - person MSalters; 20.01.2009
comment
UTF-16 использует 4 байта для дополнительных плоскостей. - person dan04; 05.07.2010

Как рекомендовал г-н Шайни, Unicode — это то, что нужно. Если вы хотите немного больше узнать о последствиях этого решения, посмотрите здесь: http://www.mihai-nita.net/article.php?artID=20050306b

person Mihai Nita    schedule 09.02.2009