abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:22 | Nová verze

    GNU awk (gawk), implementace specializovaného programovacího jazyka pro zpracování textu, byl vydán ve verzi 5.4.0. Jedná se o větší vydání po více než dvou letech. Mezi četnými změnami figuruje např. MinRX nově jako výchozí implementace pro regulární výrazy.

    |🇵🇸 | Komentářů: 0
    včera 16:22 | IT novinky

    Internetový prohlížeč Ladybird ohlásil tranzici z programovacího jazyka C++ do Rustu. Přechod bude probíhat postupně a nové komponenty budou dočasně koexistovat se stávajícím C++ kódem. Pro urychlení práce bude použita umělá inteligence, při portování první komponenty prohlížeče, JavaScriptového enginu LibJS, bylo během dvou týdnů pomocí nástrojů Claude Code a Codex vygenerováno kolem 25 000 řádků kódu. Nejedná se o čistě autonomní vývoj pomocí agentů.

    NUKE GAZA! 🎆 | Komentářů: 4
    včera 15:55 | Nová verze

    Byl vydán Mozilla Firefox 148.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově lze snadno povolit nebo zakázat jednotlivé AI funkce. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 148 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 2
    včera 12:44 | Nová verze

    Byla vydána nová verze 22.1.0, tj. první stabilní verze z nové řady 22.1.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools a Libc++.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Humor

    X86CSS je experimentální webový emulátor instrukční sady x86 napsaný výhradně v CSS, tedy bez JavaScriptu nebo dalších dynamických prvků. Stránka 'spouští' assemblerovový program mikroprocesoru 8086 a názorně tak demonstruje, že i prosté CSS může fungovat jako Turingovsky kompletní jazyk. Zdrojový kód projektu je na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 6
    včera 12:11 | Nová verze

    Po šesti letech byla vydána nová verze 1.3 webového rozhraní ke gitovým repozitářům CGit.

    Ladislav Hagara | Komentářů: 0
    včera 02:33 | Nová verze

    Byla vydána nová verze 6.1 linuxové distribuce Lakka (Wikipedie), jež umožňuje transformovat podporované počítače v herní konzole. Nejnovější Lakka přichází s RetroArchem 1.22.2.

    Ladislav Hagara | Komentářů: 0
    včera 02:11 | Nová verze

    Matematický software GNU Octave byl vydán ve verzi 11.1.0. Podrobnosti v poznámkách k vydání. Vedle menších změn rozhraní jsou jako obvykle zahrnuta také výkonnostní vylepšení a zlepšení kompatibility s Matlabem.

    |🇵🇸 | Komentářů: 1
    23.2. 21:44 | Nová verze

    Weston, referenční implementace kompozitoru pro Wayland, byl vydán ve verzi 15.0.0. Přehled novinek v příspěvku na blogu společnosti Collabora. Vypíchnout lze Lua shell umožňující psát správu oken v jazyce Lua.

    Ladislav Hagara | Komentářů: 0
    23.2. 21:11 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 29 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (11%)
     (27%)
     (2%)
     (5%)
     (1%)
     (12%)
     (26%)
    Celkem 953 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    MySQL - blbne kódování

    Znakové sady pro komunikaci klienta se serverem a znakové sady pro uložení dat

    Při problému se znakovou sadou je podstatné rozlišovat znakové sady pro:
    • komunikaci klienta se serverem
    • samotné uložení dat
    ad a) Použité znakové sady při komunikaci server/klient ovlivňují 3 proměnné:
    • character_set_client - znaková sada, ve které jsou data poslána klientem
    • character_set_connection - znaková sada, do které jsou poslaná data od klienta překonvertována
    • character_set_results - znaková sada, ve které jsou výsledná data zaslána klientovi
    vypsat proměnné související se znakovými sadami lze takto: show variables like '%character%';

    Pro nastavení výše uvedených proměnných existují "zkratky":
    • set names x; je ekvivalentní (nezmiňuji nastavení collation):
      
      set character_set_client = x;
      set character_set_results = x;
      set character_set_connection = x;
      
      
    • set character set x; je ekvivalentní (nezmiňuji nastavení collation):
      
      set character_set_client = x;
      set character_set_results = x;
      set character_set_connection = @@character_set_database
      
      
    • parametr --default-character-set=x u mysql klienta a mysqldump odpovídá vykonání: set names x;
    ad b) Znaková sada pro uložení dat se dá nastavit pro:
    • server - nastavení typicky v sekci [mysqld] v my.cnf
    • databázi - nastavení typicky při tvorbě databáze: create database x character set y;
    • tabulku - nastavení typicky při tvorbě tabulky: create table x ... character set y;
    • sloupec - nastavení typicky při tvorbě tabulky: ... columnx varchar(255) character set y ...
    • řetězec - např. _latin1'abc' - tzv. introducer
    ověřit nastavení znakových sad lze pro tabulku a sloupce takto: show create table table_name; a pro databázi takto: show create database database_name; .

    Schematický popis zpracování dat - konverze znakových sad

    c_s je zkratkou pro: character_set
    1. klient pošle data serveru
    2. server provede konverzi z c_s_client do c_s_connection (nekonvertovány řetězce s introducerem)
    3. server provede konverzi z c_s_connection do znakové sady úložiště
    4. server data uloží

    Možné chyby

    Z toho vyplývají následující možné chyby:

    Předpoklad: řetězec "příliš žluťoučký kůň" je kódován v utf8
    • špatná proměnná c_s_connection - chyba při konverzi c_s_client/c_s_connection. Příklad ukazuje možné úskalí při použití set character set a špatně nastavené znakové sady pro databázi.
      
      create database c_s_test character set latin1; 
      use c_s_test;
      create table t1 (data varchar(255)) character set utf8;
      /* znaková sada pro tabulku je utf8 */
      set character set utf8; 
      /* c_s_connection je stále nastavené na latin1 */
      insert into t1 values('příliš žluťoučký kůň');
      select convert(data using utf8) = _utf8'příliš žluťoučký kůň' from t1 limit 1;
      /* chyba - nerovnají se*/
      drop database c_s_test;
      
      
    • špatná proměnná c_s_client - chyba při konverzi c_s_client/c_s_connection. Data pošleme serveru ve špatném kódování.
      
      create database c_s_test character set utf8; 
      use c_s_test;
      create table t1 (data varchar(255)) character set utf8;
      set names utf8; 
      set character_set_client = latin1;
      /* c_s_client je nastaveno na latin1 */
      insert into t1 values('příliš žluťoučký kůň');
      select convert(data using utf8) = _utf8'příliš žluťoučký kůň' from t1 limit 1;
      /* chyba - nerovnají se*/
      drop database c_s_test;
      
      
    • Chyba při konverzi c_s_connection/znaková sada úložiště. Když máme nastavenou špatnou znakovou sadu pro tabulku, tak to taky není ono.
      
      create database c_s_test character set utf8; 
      use c_s_test;
      create table t1 (data varchar(255)) character set latin1;
      /* znaková sada pro tabulku je latin1 */
      set names utf8; 
      insert into t1 values('příliš žluťoučký kůň');
      select convert(data using utf8) = _utf8'příliš žluťoučký kůň' from t1 limit 1;
      /* chyba - nerovnají se*/
      drop database c_s_test;
      
      
    • Špatně nastavená proměnná c_s_results. Porovnání řetězců tentokrát vrátí 1 - data jsou uložena a zpracována bez chyb při konverzi. Schválně je nastavena jiná znaková sada pro character_set_connection. Dochází ke konverzi utf8 -> latin2 -> utf8. Pro tabulku můžete případně zvolit latin2 znakovou sadu a výsledek bude též správný. Výsledkem druhého selectu je ovšem špatná diakritika kvůli špatně nastavené proměnné c_s_results.
      
      create database c_s_test character set utf8; 
      use c_s_test;
      create table t1 (data varchar(255)) character set utf8;
      set names utf8;
      set character_set_connection = latin2;
      set character_set_results = latin1;
      insert into t1 values('příliš žluťoučký kůň');
      select convert(data using utf8) =  _utf8'příliš žluťoučký kůň' from t1 limit 1;
      /* OK vrátí 1*/
      select convert(data using utf8) from t1 limit 1;
      /* výsledkem je špatná diakritika */
      drop database c_s_test;
      
      

    Související dokumenty

    oficiální dokumentace MySQL (externí dokument)
    FAQ na abclinuxu (FAQ)

    Dokument vytvořil: razor, 21.2.2007 21:14 | Poslední úprava: DaBler, 30.10.2012 20:19 | Další přispěvatelé: razor | Historie změn | Zobrazeno: 3796×

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.