Obecnie badam specyfikację języka Digital Mars D i mam małe problemy ze zrozumieniem kompletnej natury prymitywnych typów postaci. Książka Learn to Tango With D jest podobnie niejasna co do możliwości i ograniczeń języka w tym obszarze.Jakie są ograniczenia pierwotnych typów znaków w D?
typy podane są na the website jak:
char; // unsinged 8 bit UTF-8 wchar; // unsigned 16 bit UTF-16 dchar; // unsigned 32 bit UTF-32
Ponieważ wiemy, że większość transformacji Unicode (UTF) kodowania formatu reprezentacji znaków o zmiennej bitowej szerokości, to znaczy, że char w D może zawierać tylko wartości, które zmieszczą się w 8 bitach, czy rozszerza się w pamięci fizycznej maszyny, gdy podajesz znaki dwubajtowe? Być może jest jakaś inna możliwość, jak automatyczne rzucanie do następnego najbardziej odpowiedniego typu, gdy przeciążasz zmienną?
Załóżmy na przykład, chcę użyć znaku UTF-8 w edytorze i wpisać po chińsku. Czy po prostu się przewróci, czy może radzi sobie ze znakami Unicode bardziej "poprawnie", jak w C#? Czy nadal konieczne byłoby dostarczenie kodu kleju umożliwiającego pracę z dowolnym językiem obsługiwanym przez Unicode?
Byłbym wdzięczny za wszelkie szczegółowe informacje, jakie możesz zaoferować na temat tego, jak te typy działają pod kołdrą i na podstawie ogólnych wskazówek dotyczących najlepszych praktyk dotyczących radzenia sobie z ich ograniczeniami.
„Skoro wiemy, że standard Unicode reprezentuje znaki o zmiennej bitowej szerokości "-> masz na myśli utf8? – elcuco
Tak, mam na myśli kodowanie UFT. Przepraszam za zamieszanie. – IanGilham