В настоящее время я изучаю спецификацию Digital Mars D, и я немного затрудняюсь понять всю природу примитивного персонажа типы. Книга Learn to Tango With D также смутно описывает возможности и ограничения языка в этой области.
Типы указаны на веб-сайте как:
char; // unsinged 8 bit UTF-8 wchar; // unsigned 16 bit UTF-16 dchar; // unsigned 32 bit UTF-32
Поскольку мы знаем, что большинство кодировок формата Unicode Transformation (UTF) представляют символы с переменной шириной бита, означает ли это, что char в D может содержать только значения, которые будут соответствовать 8 битам, или он расширяется в физической памяти аппарата, когда вы даете ему двухбайтовые символы? Возможно, есть еще одна возможность, например автоматическое кастинг в следующий наиболее подходящий тип при перегрузке переменной?
Скажем, например, я хочу использовать UTF-8 char в редакторе и набирать на китайском языке. Будет ли это просто упасть, или он сможет обрабатывать символы Unicode более "правильно", например, на С#? Будет ли еще необходимо предоставить код клея, позволяющий работать с любым языком, поддерживаемым Unicode?
Я был бы признателен за любую конкретную информацию, которую вы можете предложить о том, как эти типы работают под обложками, и любые рекомендации по лучшим рекомендациям по устранению их ограничений.