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