Patrząc na unicode standard, zaleca się stosowanie zwykłych char
s do przechowywania łańcuchów zakodowanych w UTF-8. Czy działa to zgodnie z oczekiwaniami w C++ i podstawowym std::string
, czy też istnieją przypadki, w których kodowanie UTF-8 może powodować problemy?Jaki jest najlepszy sposób przechowywania ciągów UTF-8 w pamięci w C/C++?
Na przykład przy obliczaniu długości może nie być tożsama z liczbą bajtów - jak to ma być obsługiwane? Czytając standard, prawdopodobnie używam macierzy do przechowywania, ale nadal będę musiał napisać funkcje takie jak strlen
itd., Które działają na zakodowanym tekście, ponieważ o ile rozumiem problem, standard rutyny są albo tylko ASCII, albo oczekują szerokich literałów (16 bitów lub więcej), które nie są zalecane przez standard Unicode. Do tej pory najlepszym źródłem znalazłem o rzeczy kodowania jest post na Joel's on Software, ale to nie wyjaśnia, co my biedni C++ developer powinien używać :)
To jest prawdopodobnie droga. Istnieje również biblioteka ICU, która zajmuje mniej więcej to samo. – sastanin