Avatar billede learner Praktikant
10. december 2005 - 12:43 Der er 15 kommentarer og
1 løsning

Min phpMyAdmin viser ikke UTF-8 korrekt

Hej :o)
Jeg har kæmpet en del med at få min phpmyadmin til at vise utf-8 korrekt. Håber nogen kan hjælpe mig.

Mere præcist om min situation:
Mine sider kører fint og utf8 virker fint med diverse polske og danske specialtegn. Både når jeg henter ud af databasen og når jeg skriver til databasen, så virker det fint så længe jeg gør det på hjemmesiden.

Hvad er der galt:
Det er kun min phpmyadmin der opfører sig underligt. Den viser ikke indholdet i databasen korrekt, men erstatter specialtegn med A¨^ og lignende.
Og hvis jeg skriver/redigerer i databasen med phpmyadmin(PMA), så går indholdet på hjemmesiden helt i kage og viser underlige tegn :o)

Jeg har adgang til php.ini filen. Og jeg har indstalleret den nyeste version af Phpmyadmin(PMA) på serveren.

Hvad kan være årsagen/løsningen på mit problem?

Jeg har prøvet at køre en mysql_query("SET NAMES 'utf8'") når jeg starter PMA op, og det gjorde ingen forskel.

På forhånd tak :o)
Avatar billede Slettet bruger
10. december 2005 - 20:08 #1
Jeg tror ikke, det er MySQLs indstillinger, du skal pille ved for at få det til at virke. I stedet er det PMAs egen opsætning, du skal se på. Jeg vil tro, at det er disse indstillinger, du skal se efter:

$cfg[DefaultCharset]
  skal nok sættes til utf8

$cfg[AllowAnywhereRecoding]
  skal nok sættes til true, og så skulle der komme en menu, hvor man kan vælge mellem tegnsæt på PMAs forside.

$cfg[AvailableCharsets]
  indeholder de tegnsæt, der skal være i menuen.
Avatar billede learner Praktikant
11. december 2005 - 00:56 #2
Hej :o)
Jeg håber du har ret :o)

Jeg har kigget på dit forslag og fundet ud af at $cfg['AllowAnywhereRecoding'] var sat til false.
Jeg har rettet til:
$cfg['AllowAnywhereRecoding'] = TRUE;
uploaded og testet.

Resultatet er denne fejlbesked:
Kan ikke indlæse iconv eller omkode nødvendig udvidelse til tegnsæt-konvertering, konfigurer php til at tillade brug af disse udvidelser eller slå tegnsæt-konvertering fra i phpMyAdmin

Jeg har kigget lidt i PMA filerne og fundet ud af følgende:
$strCantLoadRecodeIconv = "Kan ikke indlæse iconv eller omkode nødvendig udvidelse til tegnsæt-konvertering, konfigurer php til at tillade brug af disse udvidelser eller slå tegnsæt-konvertering fra i phpMyAdmin";

/**
* Loads the recode or iconv extensions if any of it is not loaded yet
*/
if (isset($cfg['AllowAnywhereRecoding'])
    && $cfg['AllowAnywhereRecoding']
    && $allow_recoding) {

    if ($cfg['RecodingEngine'] == 'recode') {
        if (!@extension_loaded('recode')) {
            PMA_dl('recode');
            if (!@extension_loaded('recode')) {
                echo $strCantLoadRecodeIconv;
                exit;
            }
        }
        $PMA_recoding_engine            = 'recode';
    } else if ($cfg['RecodingEngine'] == 'iconv') {
        if (!@extension_loaded('iconv')) {
            PMA_dl('iconv');
            if (!@extension_loaded('iconv')) {
                echo $strCantLoadRecodeIconv;
                exit;
            }
        }
        $PMA_recoding_engine            = 'iconv';
    } else {
        if (@extension_loaded('iconv')) {
            $PMA_recoding_engine        = 'iconv';
        } else if (@extension_loaded('recode')) {
            $PMA_recoding_engine        = 'recode';
        } else {
            PMA_dl('iconv');
            if (!@extension_loaded('iconv')) {
                PMA_dl('recode');
                if (!@extension_loaded('recode')) {
                    echo $strCantLoadRecodeIconv;
                    exit;
                } else {
                    $PMA_recoding_engine = 'recode';
                }
            } else {
                $PMA_recoding_engine    = 'iconv';
            }
        }
    }
} // end load recode/iconv extension

Er fejlen i min php.ini nu? eller hvad?
Avatar billede learner Praktikant
11. december 2005 - 12:18 #3
her er indholdet i min php.ini fil :
safe_mode = On
register_globals = Off
default_charset = "UTF-8"
safe_mode_allowed_env_vars = PHP_,LANG,LANGUAGE


Jeg har prøvet at tilføje dette til min php.ini :
iconv.input_encoding = "utf-8"
iconv.output_encoding = "utf-8"
iconv.internal_encoding = "utf-8"
men det hjalp ikke..

glæder mig meget til at høre fra dig igen :o)
Avatar billede learner Praktikant
11. december 2005 - 14:00 #4
Er det ikke fordi at iconv ikke er slået til?
Avatar billede Slettet bruger
11. december 2005 - 19:08 #5
Jo, det vil jeg mene. Du skal have enten iconv eller recode installeret på serveren. PMA burde selv kunne finde ud af det, hvis du bare har en af dem.
Avatar billede learner Praktikant
11. december 2005 - 23:34 #6
Ok :o)
Jeg beder min host om at installere iconv (eller recode) extensionen

Tror du at jeg skal skrive:
iconv.input_encoding = "utf-8"
iconv.output_encoding = "utf-8"
iconv.internal_encoding = "utf-8"
i min php.ini ????

Mange tak, jeg tror at du hjalp mig på rette vej sandbox :o)
Avatar billede Slettet bruger
12. december 2005 - 04:26 #7
Nej, jeg tror ikke det er nødvendigt at pille i php.ini, da dine normale php-scripts fungerer fint allerede. Det er bare PMA, som skal "lære" hvilke tegnsæt, du bruger.
Avatar billede Slettet bruger
12. december 2005 - 04:27 #8
Og så lægger jeg lige et svar. Du kan bare vente med at acceptere det, til du har løst problemet.
Avatar billede learner Praktikant
12. december 2005 - 13:29 #9
iconv er blevet installeret nu, men jeg oplever stadig problemet med at tegnene ike vises korrekt :o(
Når jeg kører en phpinfo skriver den følgende unde iconv:
iconv
iconv support  enabled 
iconv implementation  unknown 
iconv library version  unknown 

Directive  Local Value  Master Value
iconv.input_encoding ISO-8859-1 ISO-8859-1
iconv.internal_encoding ISO-8859-1 ISO-8859-1
iconv.output_encoding ISO-8859-1 ISO-8859-1

Tror du nu at jeg skal skrive:
iconv.input_encoding = "utf-8"
iconv.output_encoding = "utf-8"
iconv.internal_encoding = "utf-8"
i min php.ini ????

Derudover får jeg denne advarsel af phpmyadmin når jeg logger ind:
PHP-udvidelsen mbstring blev ikke fundet og du ser ud til at bruge et multibyte tegnsæt. Uden mbstring-udvidelsen er phpMyAdmin ude af stand til at opdele strenge korrekt og dette kan forårsage uventede resultater.

Tyder det på at mbstring også skal installeres for at det virker?
Eller er det ligegodt?
Avatar billede Slettet bruger
13. december 2005 - 06:04 #10
Jeg er ikke sikker. Det kan godt være, at du skal have mbstring også.

Jeg vil stadig mene, at du ikke skulle behøve de indstillinger for iconv i php.ini, men de kan nok ikke skade, og muligvis skal de bruges, så prøv ad.
Avatar billede learner Praktikant
13. december 2005 - 14:41 #11
Dælans :o) nu har jeg også fået mbstring installeret og det er stadig ikke fixet.

"bøger" vises som "bøger"
håber det vises korrekt herinde :o)
Avatar billede learner Praktikant
13. december 2005 - 14:43 #12
Det vises korrekt

Hvad skal man dog stille op? :o)
Avatar billede Slettet bruger
13. december 2005 - 14:53 #13
Får du ikke en dropdown-meu på PMA-forsiden, hvor du kan vælge tegnsæt nu?
Avatar billede learner Praktikant
13. december 2005 - 15:14 #14
Jo, det har jeg gjort hele tiden. Jeg vælger dette:
Language: danish (da-utf-8)
MySQL forbindelses-sammenkøring: utf8_general_ci

og så står der:
MySQL Tegnsæt: UTF-8 Unicode (utf8)
Avatar billede learner Praktikant
13. december 2005 - 15:46 #15
men jeg kan ikke ændre 'MySQL Tegnsæt:'
Avatar billede learner Praktikant
13. december 2005 - 22:28 #16
Nu virker det sku :o)
Tusind tak
Jeg er ikke helt klar over hvad der har gjort forskellen, men det skal jeg til at forske lidt i de næste dage.
Jeg havde ik klaret det uden dig sandbox og ekspertens forum :o)
Tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester