Piszę parser HTML w C, i staram się poprawnie podążać za the W3C guidelines on parser implementation. Jednym z kluczowych punktów jest to, że parser działa na strumieniu kodów Unicode zamiast na bajtach, co ma sens.Strumień kodów Unicode z bajtów w C?
Zasadniczo, następnie podano bufor znanego kodowania znaków (I albo będzie mieć kodowania wejściowego wyraźny lub użyje algorytmu skanowania wstępnego HTML5 zrobić dobre przypuszczenie), co jest najlepszym sposobem w C - idealnie między platformami, ale trzymanie się systemu UNIX jest w porządku - aby powtórzyć sekwencję kodów Unicode?
Czy przydzielasz kilka buforów o rozsądnej wielkości i używasz iconv
do zrobienia? Czy powinienem patrzeć na ICU? Makra, takie jak U16_NEXT
wydają się być dobrze dopasowane do mojego zadania, ale dokumentacja ICU jest niesamowicie długa i trudno jest dokładnie zobaczyć, jak sklejać elementy.
'iconv' wydaje się być dobrym początkiem. Jest konceptualnie prosty i szeroko dostępny. –
OK, dam 'iconv' spróbować. Czy uważasz, że najbardziej sensownym jest przejście na UTF-32? Mimo, że jest to prawdopodobnie prawie bezużyteczne kodowanie, oznaczałoby to, że co 4 bajty dokładnie reprezentują punkt kodu Unicode. –
Tak, rzeczywiście. UTF-32 to doskonale dokładne kodowanie. –