Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 145. Aktuální verze Firefoxu je 148. Od září přejde Chrome na dvoutýdenní cyklus vydávání. V kterém týdnu bude mít Chrome větší číslo verze než Firefox? 😀
Apple představil nové čipy M5 Pro a M5 Max, MacBook Pro s čipy M5 Pro a M5 Max, MacBook Air s čipem M5 a Studio Display a nový Studio Display XDR.
Bylo spuštěno hlasování o přednáškách a workshopech pro letošní Installfest, jenž proběhne o víkendu 28. a 29. března v Praze na Karlově náměstí 13.
Byla vydána (Mastodon, 𝕏) třetí RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.
Apple představil iPhone 17e a iPad Air s čipem M4.
Byla vydána verze 1.0 editoru kódů Gram. Jedná se o fork editoru Zed bez telemetrie a umělé inteligence.
Byla oznámena spolupráce GrapheneOS s Motorolou. Podrobnosti v tiskové zprávě. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 26.2.1. Přehled novinek v Changelogu.
Volí se dvě místa v Radě openSUSE. Seznamte se se čtyřmi kandidáty. Členové projektu openSUSE mohou hlasovat od 1. do 8. března. Výsledky budou oznámeny 9. března.
Společnost OpenAI uzavřela dohodu s americkým ministerstvem obrany o poskytování technologií umělé inteligence (AI) pro utajované sítě americké armády. Firma to oznámila několik hodin poté, co prezident Donald Trump nařídil vládě, aby přestala využívat služby společnosti Anthropic.
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main() {
setlocale(LC_ALL,"");
wchar_t myChar1 = L'Ω';
wchar_t myChar2 = 0x2126; // hexadecimal encoding of char Ω using UTF-16
wchar_t myChar3 = L'\xe2\x84\xa6';
wprintf(L"%lc \n", myChar1);
wprintf(L"%lc \n", myChar2);
wprintf(L"%lc \n", myChar3);
return 0;
}
Zdroják je na disku uložen v souboru jako UTF-8, tj. znak 'Ω' je v něm jako 0xe2 0x84 0xa6. Ovšem pokud ho chci zapsat v C jako posloupnost bytů tak musím přes UTF-16 (\u2126), já bych ho chtěl ale zapsat jako UTF-8, jako posloupnost těch 3 bytů myChar3.
Z mého pohledu se hodnota u myChar1 a myChar3 zdá stejná (jen trochu jinak zapsaná), ale ve výsledku není, poslední wprintf vypíše znak '¦', tj. \u00a6 neboli UTF-8 0xC2 0xA6.
No jsem z toho nějakej zblblej, používám gcc version 4.6.1 20110908 a glibc-2.14-5.x86_64 :D
Když si v bashi dám echo -e "\xe2\x84\xa6\u2126", tak to na obrazovku normálně vypíše ΩΩ.
wchar_t není UTF-8.
UTF-8 je representace znaků Unicode pomocí různě dlouhých sekvencí bajtů.
wchar_t je nějaký blíže nespecifikovaný platformově závislý vícebytový typ v C. Na MS Windows 16bitový integer (representující UCS-2), na Unixu spíš 32bitový integer (representující UCS-4), taky to ale klidně může být něco ještě podivnějšího, a Unicode Consortium nedoporučuje to používat kvůli přenositelnosti.
Takže běžnější (alespoň na Uninxu; na MS Windows platformová závislost málokoho trápí, když jejich veškerá platforma je MS Windows) je represntovat Unicode řetězce pomocí char v UTF-8, přičemž potom samozřejmě je rozdíl mezi znaky a bajty, protože znak může být více bajtů. Tvoje oblíbená knihovna/framework určitě má funkce pro práci s UTF-8 kódovanými řetězci, tudíž zapisuješ zdroják přímo v UTF-8 (vyžaduje, aby 8bitové znaky bral kompilátor, dnes už nebývá problém) a používáš příslušné UTF-8 (ne wide-char!) funkce.
mbsrtowcs() a wcsrtombs(), v C++ se přiřadí locale I/O streamu (metoda imbue()).
char * v UTF-8 – tak jak to dostaneš, tak to vypíšeš.
Řešit to musíš až v okamžiku, kdy tě zajímá, kolik místa to zabere na obrazovce (strlen() nestačí) nebo pokud chceš seřadit seznam (strcmp() nestačí), případně zkracovat řetězce (abys nerozpůlil znak).
Tiskni
Sdílej: