<div dir="auto">Děkuji za info.<div dir="auto"><br></div><div dir="auto">Jestli to dobře chápu a podle toho co jsem si o tom přečetl tak utf-8 znak začíná znakem 128 a za ním jsou 128+. Pokud je znak vicebajtovy tak je to 128 128+ 128+ atd. Pokud jdou po sobě dva utf-8 znaky ("ěř" třeba) tak je to 128 128+ 128 128+. Je to tak?</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Dne út 30. 8. 2022 12:58 uživatel Nesvacil Jiri <<a href="mailto:nesvacil@posys.eu">nesvacil@posys.eu</a>> napsal:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">utf-8 se prave encoduje do ruzne delky. Pouziva se strlen na vraceni <br>
delky v bytech. Je prave problem v cteni z stream, kde potrebujete <br>
vratit cely znak a ne v pulce.<br>
<br>
Na utf-16 a podobne kodovani zapominame umyslne, je to prezitek.<br>
<br>
lua by Vam na to mela bezet v pohode. Uvnitr je vse utf-8, delku vraci <br>
pocet bytu.<br>
<br>
golang se kompiluje do c. To co ma navic je take to reseni s bufferem a <br>
stringy.<br>
<br>
Jirka<br>
<br>
Dne 30.08.2022 v 10:09 Michal Grunt napsal(a):<br>
> Tak jsem to rozlousknul. Ale stejně v tom mám zmatek snad ještě větší<br>
> než před tím...<br>
><br>
> Problém byl v tom, že se program spouštěl po bootu jako služba<br>
> (znakový výstup na konzoli - malý grafický LCD) a asi neměl k<br>
> dispozici správné systémové proměnné "locale" (a vůbec nemělo vliv co<br>
> jsem nastavoval přímo v programu příkazem setlocale() ). Locale jsem<br>
> samozřejmě nastavené měl, když jsem byl přihlášený. Program spuštěný<br>
> jako služba toto asi neměl k dispozici (nejspíš je nutné locale<br>
> nastavit nějak globálně). Když jsem v nastavení služby upravil<br>
> spouštění na "ExecStart=env LANG=cs_CZ.UTF-8 /home/pi/mujprogram" tak<br>
> už to šlape, čeština se zobrazuje a to i bez wchar_t prostě jenom s<br>
> normálním char přes to, že jsou české znaky dvoubajtové což samozřejmě<br>
> dělá bordel třeba u strlen... Ideální by to asi bylo vyřešit pomocí<br>
> wchar, ale na tom mi havaroval fgetws. Zkusím si ještě pohrát s<br>
> fshort-wchar a mrknu na tu dělitelnost délky bufferu. Ale co když zase<br>
> bude něco co bude zobrazovat východní jazyky, které jsou snad 4<br>
> bajtové...<br>
><br>
> "C" jsem zvolil kvůli rychlosti (běží to na RPi Zero 1, které není<br>
> zrovna nejrychlejší nehledě na to, že to běží na baterii kde minimální<br>
> zátěž CPU = delší výdrž, Python byl v tomto tragický) i když jsou s<br>
> tím spojeny některé obtíže.<br>
><br>
> po 29. 8. 2022 v 21:58 odesílatel Michal Vanka <<a href="mailto:junk.mv@gmail.com" target="_blank" rel="noreferrer">junk.mv@gmail.com</a>> napsal:<br>
><br>
>> Jestli to neni tim, ze kodovani UTF-8 neni 16 bitove...<br>
>> Viz:<br>
>> <a href="https://en.wikipedia.org/wiki/UTF-8" rel="noreferrer noreferrer" target="_blank">https://en.wikipedia.org/wiki/UTF-8</a><br>
>><br>
>><br>
>> On Mon, Aug 29, 2022 at 9:31 PM <<a href="mailto:spam@nagano.cz" target="_blank" rel="noreferrer">spam@nagano.cz</a>> wrote:<br>
>>> Pripadne mi podezrela kombinace wchar_t a utf8. Zkuste vyhodit vse 16bitove.<br>
>>> L.<br>
>>><br>
>>> Sent from MailDroid<br>
>>><br>
>>> -----Original Message-----<br>
>>> From: Michal Grunt <<a href="mailto:michal.grunt@gmail.com" target="_blank" rel="noreferrer">michal.grunt@gmail.com</a>><br>
>>> To: HW-news <<a href="mailto:hw-list@list.hw.cz" target="_blank" rel="noreferrer">hw-list@list.hw.cz</a>><br>
>>> Sent: po, 29 srp 2022 20:27<br>
>>> Subject: fgetws<br>
>>><br>
>>> Jsem v koncích. Lámu si s tím hlavu už několik hodin. Po překladu (gcc<br>
>>> na RPi) a spuštění to hlásí chybu: Neoprávněný přístup do paměti<br>
>>> (SIGSEGV)<br>
>>><br>
>>> Havaruje to na fgetws...<br>
>>><br>
>>> Příkaz "mpc status | head -n 1" vrátí název stanice nebo interpreta a<br>
>>> to v UTF 8 formátu (diakritika).<br>
>>><br>
>>> Co dělám špatně? Zkoušel jsem nad tím i usilovně přemýšlet :-), ale<br>
>>> ani to nepomohlo. Metoda pokus omyl (co najdu po internetu) je také<br>
>>> selhala. Níže je uveden jeden z mnoha pokusů.<br>
>>><br>
>>> Blbý je, že se to ani nedá nějak pořádně debugovat nebo to neumím (na<br>
>>> RPi a přístup přes SSH na konzoli).<br>
>>><br>
>>> Děkuji<br>
>>> MG<br>
>>><br>
>>> #define BUF_LEN 255<br>
>>> static wchar_t szwBuffer[BUF_LEN];<br>
>>><br>
>>> setlocale(LC_CTYPE, "en.UTF-8");<br>
>>><br>
>>> fp = popen( "mpc status | head -n 1", "r");<br>
>>> if (fp == NULL) {<br>
>>>     printf("Failed to run command\n" );<br>
>>>     exit(1);<br>
>>> }<br>
>>><br>
>>> fwide(fp,1);<br>
>>> while (fgetws(szwBuffer, sizeof(szwBuffer)/sizeof(wchar_t), fp) !=<br>
>>> (wchar_t *)NULL);<br>
>>><br>
>>> wprintf( L"%s\n", szwBuffer);<br>
>>> _______________________________________________<br>
>>> HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer noreferrer" target="_blank">www.HW.cz</a><br>
>>> <a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br>
>>> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
>>> _______________________________________________<br>
>>> HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer noreferrer" target="_blank">www.HW.cz</a><br>
>>> <a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br>
>>> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
>> _______________________________________________<br>
>> HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer noreferrer" target="_blank">www.HW.cz</a><br>
>> <a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br>
>> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
> _______________________________________________<br>
> HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer noreferrer" target="_blank">www.HW.cz</a><br>
> <a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br>
> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
_______________________________________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer noreferrer" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote></div>