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 12:33 | IT novinky

    Z novinek představených na Google I/O 2025: Přehledy od AI (AI Overviews) se rozšiřují do dalších zemí. Užitečné, syntetizované přehledy od generativní AI jsou nově k dispozici i českým uživatelům Vyhledávače.

    Ladislav Hagara | Komentářů: 0
    dnes 11:44 | IT novinky

    Šestice firem označovaných jako „MAMAAN“ – tedy Meta (Facebook, Instagram), Alphabet (Google), Microsoft, Apple, Amazon a Netflix – je zodpovědná za více než padesát procent světového internetového provozu. Dalšími velkými hráči jsou TikTok a Disney+. Společně tak zásadně určují podobu digitálního prostředí, spotřebitelského chování i budoucích trendů v oblasti technologií. I přesto, že se podíl těchto gigantů od roku 2023 o něco snížil, jejich dominantní postavení zvyšuje volání po regulaci.

    Ladislav Hagara | Komentářů: 1
    dnes 11:33 | IT novinky

    Evropská komise (EK) navrhuje zavést plošný poplatek ve výši dvou eur (zhruba 50 Kč) za každý malý balík vstupující do Evropské unie. Poplatek se má týkat balíků v hodnotě do 150 eur (zhruba 3700 Kč), které v EU nepodléhají clu. V loňském roce bylo do EU doručeno kolem 4,6 miliardy takovýchto balíků. Poplatek má krýt náklady na kontroly rostoucího počtu zásilek levného zboží, které pochází především z Číny.

    Ladislav Hagara | Komentářů: 1
    včera 18:11 | IT novinky

    Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | Komunita

    V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).

    Ladislav Hagara | Komentářů: 0
    včera 15:00 | Nová verze

    Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 4
    včera 12:22 | Pozvánky

    Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.

    jose17 | Komentářů: 0
    včera 04:44 | IT novinky

    Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevily v únicích dat a případně se nechat na další úniky upozorňovat.

    Ladislav Hagara | Komentářů: 16
    19.5. 23:22 | Zajímavý software

    Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 9
    19.5. 22:22 | Zajímavý software

    V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    Jaký je váš oblíbený skriptovací jazyk?
     (62%)
     (23%)
     (8%)
     (2%)
     (0%)
     (0%)
     (6%)
    Celkem 52 hlasů
     Komentářů: 5, poslední včera 20:57
    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: 3607×

    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.