problém s diakritikou pri výpise z databáze

Sekcia: Programovanie 14.08.2008 | 19:03
Avatar ixod skusam Ubuntu 7.10  Používateľ
Zdravím, mám tabuľku, kde mám uložené informácie o chemikáliách.
V stlpcoch nazov a vlastnosti mam uložené informácie aj so slovenskou diakritikou. Stlpce mam nastavene na tzp varchar (255).
Tabulku som skusal zotriedit cez utf-slovak_ci aj cp1250 aj ine a stale mi po
zavolaní informácií o chemikálii z databáze vypisuje resp. nezobrazuje diakritiku.
V stranke, ktora mi informacie zobrazuje som vzdy zmenil aj meta informaciu v hlavicke
na zodpovedajuci charset typ a nic.
Niekedy mám pocit, že čím viac sa v tom rýpem, tým menej tomu rozumiem.
    • Re: problém s diakritikou pri výpise z databáze 14.08.2008 | 19:11
      Avatar Samuel BWPOW Kupka CentOS, Mandriva  Používateľ
      Cez phpmyadmin vidis diakritiku dobre?
      Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
    • Re: problém s diakritikou pri výpise z databáze 14.08.2008 | 21:21
      .............   Návštevník
      Tu ide o vhodnu konstelaciu viacerych nastaveni (zotriedenie tam nie je).

      Ak si napriklad ukladal informacie cez stranku s kodovanim s CP1250 a databaza mala nastavene kodovanie ISO-8859-2, tak to spat nedostanes inak ako pri presne takomto nastaveni.

      Skus SQL prikaz "SET CHARACTER SET nieco" a potom rob s databazou. Kodovanie skusaj zmenit pomocou prehliadaca, nie v mete - to kazdy prehliadac neakceptuje a dava prednost kodovaniu v hlavicke. Vo Firefoxe to spravis pomocou View->Character Encoding
    • Re: problém s diakritikou pri výpise z databáze 14.08.2008 | 22:47
      still   Návštevník
      tiez som podobny problem riesil a nakoniec som sa rozhodol nastavovat co najviac veci explicitne - na defaultne nastavenia sa neda spoliehat..
      takze pri vytvarani tabulky nastav defaultne kodovanie na utf-8 a aj pri kazdom textovom (varchar, text,..) stlpci to tiez explicitne definuj na utf-8

      a dalej v zdrojakoch php-ka pouzivam:

      iconv_set_encoding("internal_encoding", "UTF-8");
      iconv_set_encoding("output_encoding", "UTF-8");
      iconv_set_encoding("input_encoding", "UTF-8");
      setlocale(LC_ALL, "sk_SK.UTF8");


      a po vytvoreni spojenia s databazou:

      mysql_set_charset("utf8", $db_link);

      (PHP 5 >= 5.2.3), inak:

      mysql_query("SET CHARACTER SET utf8 ");

      (pozn.: mysql ja case-sensitive v pripade kodovania a nezoberie ani s pomlckou "utf-8" a ine varianty)

      a taktiez je nevyhnutne do hlavicky stranky zadat kodovanie utf-8..


      otazka pre ostatnych... ake dalsie kodovania a ako sa daju nastavovat (php, *sql, apache)? uz dalsie hodiny stravene opravovanim pokazenej diakritiky fakt netuzim zazit.. ;-)
      • Re: problém s diakritikou pri výpise z databáze 15.08.2008 | 11:03
        Avatar ixod skusam Ubuntu 7.10  Používateľ
        Dakujem za rady, ale ktore utf-8
        si vyberas na nastavenie tabulky?
        utf8_bin alebo utf8_unicode_ci
        alebo utf8_slovak_ci?
        a po vytvoreni spojenia s databazou,
        co znamena db_link v tomto prikaze?
        mysql_set_charset("utf8", $db_link);
        To je cesta odkial kam?

        Este odpoved na prvu otazku:
        Ked otvorim localhost/phpmyadmin/ a
        nastavim sa na tabulku, kde mam zluceniny,
        vidim diakritiku spravne.

        Idem testovat co napisal still a potom sa ozvem ako som dopadol.

        Zatial dakujem vsetkym, keby mal niekto este nejake riesenie, prosim podelte sa s nim so mnou.

        Niekedy mám pocit, že čím viac sa v tom rýpem, tým menej tomu rozumiem.
        • Re: problém s diakritikou pri výpise z databáze 15.08.2008 | 11:12
          Avatar ixod skusam Ubuntu 7.10  Používateľ
          Uz to maaaaaam, bola to malickost.
          Cize mal som vsetko v databaze nastavene
          na utf8_slovak_ci. V stranke som v meta
          hlavicke definoval charset=utf-8 no a potom
          som po pripojeni k databaze zadal:
          mysql_query("SET NAMES 'utf8'");

          no a ja som tam mal predtym napisane:
          mysql_query("SET NAMES 'utf-8'"); cize cely problem robila ta pomlcka v definicii utf.

          Dakujem vsetkym za rady, zelam pekny den.
          Niekedy mám pocit, že čím viac sa v tom rýpem, tým menej tomu rozumiem.