Thread View: pl.comp.lang.c
4 messages
4 total messages
Started by Borneq
Sun, 05 Jun 2016 12:16
Usprawnienie klasy do Uniocode
Author: Borneq
Date: Sun, 05 Jun 2016 12:16
Date: Sun, 05 Jun 2016 12:16
7 lines
1230 bytes
1230 bytes
https://github.com/borneq/utfclib - jak szybko i czytelnie dodać ograniczenie na wielkość bufora wyjściowego? - w pętli dopóki pierwszy bajt czy słowo grupy opisującej znak jest różne od 0, a co gdy znak zero będzie błędnie w środku grupy? - jaką wielkość bufora 16-bitowego przydzielać dla wejściowego utf8 i odwrotnie? - w jaki dobry, statystyczny sposób określić czy tekst bez BOM jest UTF8?
Re: Usprawnienie klasy do Uniocode
Author: Borneq
Date: Sun, 05 Jun 2016 12:49
Date: Sun, 05 Jun 2016 12:49
26 lines
1744 bytes
1744 bytes
W dniu 05.06.2016 o 14:16, Borneq pisze:
> https://github.com/borneq/utfclib
> - jak szybko i czytelnie dodać ograniczenie na wielkość bufora wyjściowego?
> - w pętli dopóki pierwszy bajt czy słowo grupy opisującej znak jest
> różne od 0, a co gdy znak zero będzie błędnie w środku grupy?
> - jaką wielkość bufora 16-bitowego przydzielać dla wejściowego utf8 i
> odwrotnie?
> - w jaki dobry, statystyczny sposób określić czy tekst bez BOM jest UTF8?
Przy okazji - jak printfem wypisać znaki Unicode na konsolę lub do
pliku?
char buf[1000];
wchar_t wbuf[1000];
while (!feof(fp))
{
fgets(buf, 1000, fp);
UTF::utf8To16(buf, wbuf);
printf("%s",buf);
printf("%S", wbuf);
}
fclose(fp);
%s oczywiście jest źle
duże S: %S lub %ls zaczyna wypisywać ale przerywa po napotkaniu
pierwszego znaku nie mieszczącego się w jednym bajcie.
Re: Usprawnienie klasy do Uniocode
Author: Borneq
Date: Sun, 05 Jun 2016 12:59
Date: Sun, 05 Jun 2016 12:59
5 lines
1136 bytes
1136 bytes
W dniu 05.06.2016 o 14:49, Borneq pisze: > duże S: %S lub %ls zaczyna wypisywać ale przerywa po napotkaniu > pierwszego znaku nie mieszczącego się w jednym bajcie. wprintf(L"%s", wbuf) - nie przerywa ale wpisuje znaki ? dla uniocode
Re: Usprawnienie klasy do Uniocode
Author: keiichi
Date: Tue, 07 Jun 2016 15:41
Date: Tue, 07 Jun 2016 15:41
32 lines
2309 bytes
2309 bytes
W dniu 2016-06-05 o 14:49, Borneq pisze: > W dniu 05.06.2016 o 14:16, Borneq pisze: >> - w pętli dopóki pierwszy bajt czy słowo grupy opisującej znak jest >> różne od 0, a co gdy znak zero będzie błędnie w środku grupy? To samo, co w przypadku gdy błędny bajt będzie w środku grupy, albo w grupie znajduje się więcej bajtów niż trzeba. Jakoś obsłużyć wg potrzeb. >> - jaką wielkość bufora 16-bitowego przydzielać dla wejściowego utf8 i >> odwrotnie? Pesymistycznie? 2x więcej bajtów, niż dla UTF-8. >> - w jaki dobry, statystyczny sposób określić czy tekst bez BOM jest UTF8? Co rozumiesz przez „statyczny”? > Przy okazji - jak printfem wypisać znaki Unicode na konsolę lub do > pliku? Przenośnie? Zaopatrz się w jakąś bibliotekę. Przenośnie trudno zrobić (nawet korzystając z dobrodziejstw >= C++11). wchar_t zazwyczaj trzyma znaki w UTF-16 lub UTF-32 w zależności od systemu, char to już w ogóle wolna amerykanka zależna od bieżących ustawień locale (także na Windows, bo niektórzy się dziwią). Nieprzenośnie, znając bieżące ustawienia? Zakoduj na sztywno ;) Formalnie poczytać i zrozumieć, nawet jak użyć chcesz czegoś gotowego: http://www.cl.cam.ac.uk/~mgk25/unicode.html http://utf8everywhere.org/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads