Avatar billede learner Praktikant
16. oktober 2005 - 14:31 Der er 47 kommentarer og
3 løsninger

Unicode utf-8 med mysql database

Hej, jeg har endelig fået mine sider til at køre med utf-8 jubii, men nu er det så at jeg var inde og kigge i min db med phpmyadmin. Når jeg kigger i databasen, så er feks æøå skrevet som underlige tegn. Skal det være sådan? For jeg kan jo ikke rette i databasen med phpmyadmin. Er der nogen der har prøvet noget lignende?
Avatar billede learner Praktikant
16. oktober 2005 - 14:34 #1
glemte måske lige at fortælle:
databasen er oprettet som utf.8 ved create db, og jeg bruger collation utf_general_ci
Avatar billede learner Praktikant
16. oktober 2005 - 14:41 #2
Bøger bliver feks til Bøger når man kigger i db. Men når jeg henter i db med query, så får jeg Bøger
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 14:57 #3
Kører PMA med en UTF-8 forbindelse til din database? Hvis den kører en latin1, er dette grunden.
Avatar billede learner Praktikant
16. oktober 2005 - 14:58 #4
Jubii, hjælp :o)
Det lyder som en mulig fejl. Hvad er PMA?
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:02 #5
PMA er PhpMyAdmin. ;)

Når du logger ind, burde du kunne se feltet:

MySQL forbindelses-sammenkøring:

Dette skulle gerne være sat til utf8_general_ci. Hvis det ikke er muligt, bliver du nok nødt til at installere en seperat kopi af PMA på din server, som du så skal bruge i stedet, eller snakke med serverens administrator om en UTF-8 installation af PMA.
Avatar billede learner Praktikant
16. oktober 2005 - 15:08 #6
ja, der er et felt der hedder MySQL forbindelses-sammenkøring
og jeg har valgt utf8_general_ci
så det er nok ikke problemet alligevel.
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:14 #7
Hvad står der ved MySQL tegnsæt?
Avatar billede learner Praktikant
16. oktober 2005 - 15:16 #8
der står: UTF-8 Unicode (utf8)

har læst dette:
udklip: "bruge unicode, hvis du bruger database også unicode (ntext, nvarchar)"

Jeg bruger ikke ntext og nvarchar. Skal jeg det?
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:18 #9
Det bør du hvis du har nogle text eller varchar-felter, men det skulle ikke kunne være det der er synderen her.

Må desværre meddele at jeg ikke umiddelbart kan se hvordan du så kan løse det - men du kan selvfølgelig bruge HTML-entities som æ, ø og å som en workaround.
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:19 #10
Omend det selvfølgelig spilder en del plads...
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:21 #11
Og dog! Har måske noget her alligevel...

Hvis du har mulighed for det, så prøv at åbne PMAs config.inc.php i en teksteditor. Kontroller hvad der står ved $cfg['DefaultLang'] og $cfg['DefaultCharset'].

Det er ikke sikkert det gør nogen forskel, men hellere være på den sikre side... :)
Avatar billede learner Praktikant
16. oktober 2005 - 15:21 #12
:o) Hvorfor er det man skal bruge nvarchar og ntext? Hvad er forskellen? Ved du det?
Avatar billede learner Praktikant
16. oktober 2005 - 15:25 #13
Ahh, jeg har ikke adgang til den fil, for jeg hoster ikke selv. men jeg har mulighed for at uploade php.ini fil. Og jeg har netop en linie i php.ini som siger:
default_charset = "UTF-8"
Brugbart? :o)
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:25 #14
Forskellen er at nvarchar og ntext baserer størrelsen på antallet af tegn, modsat varchar og text, der bruger bytes. Med andre ord vil du ikke kunne udnytte pladesen fuldt ud med alm. varchar og text.
Avatar billede learner Praktikant
16. oktober 2005 - 15:26 #15
Måske skal jeg have en linie der siger noget lignende default_lang = "???"
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:27 #16
I så fald skal du enten spørge din host om du kan få at vide hvad de er sat til, eller også skal du prøve at uploade din egen kopi af PMA til din server. Det sidste er nok det nemmeste.

Husk dog lige at få den til at bruge login, så det ikke er enhver der lige kan få adgang ;)
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:28 #17
Din php.ini vil ikke hjælpe her. Det er en specifik ting for PMA vi har med at gøre.
Avatar billede learner Praktikant
16. oktober 2005 - 15:29 #18
Jeg har aldrig rodet med sådan noget før. Er det let?
Avatar billede learner Praktikant
16. oktober 2005 - 15:38 #19
> Hvis du har mulighed for det, så prøv at åbne PMAs config.inc.php i en teksteditor. Kontroller hvad der står ved $cfg['DefaultLang'] og $cfg['DefaultCharset'].


Jeg tror jeg vil spørge min host.
Hvad tror du de skal stå til?
$cfg['DefaultCharset'] = 'utf-8'; ?
$cfg['DefaultLang'] = '???'; ?
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:38 #20
Det er ikke så svært. Du skal blot hente PMA, ændre lidt i config.inc.php, og uploade.

Sandsynligvis er dette de eneste linier du skal rette:
$cfg['Servers'][$i]['auth_type']    = 'config';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = 'root';      // MySQL user
$cfg['Servers'][$i]['password']      = '';          // MySQL password (only needed

Du burde være sikker hvis du retter disse til:
$cfg['Servers'][$i]['auth_type']    = 'http';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = '';      // MySQL user
$cfg['Servers'][$i]['password']      = '';          // MySQL password (only needed

Den pågældende tekst optræder flere gange i filen, men det er kun den første forekomst du skal rette.
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:39 #21
Vær dog opmærksom på jeg ikke selv har sat PMA op på en offentlig server, så det KAN godt ske jeg tager fejl!
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:42 #22
"Hvad tror du de skal stå til? "

$cfg['DefaultCharset'] = 'utf-8'; ?
$cfg['DefaultLang'] = '???'; ?

skal være

$cfg['DefaultLang'] = 'da-utf-8';
$cfg['DefaultCharset'] = 'utf-8';

eller evt. en-utf-8 i stedet for da-utf-8, hvis du hellere vil have en engelsk interface ;)
Avatar billede learner Praktikant
16. oktober 2005 - 15:44 #23
:o) taaak :o)
Så jeg hører i bund o grund at du siger: 'Det er nok bare din PMA der ikke er indstillet helt som den skal.' Korrekt forstået?
Avatar billede learner Praktikant
16. oktober 2005 - 15:45 #24
Du skriver: Du skal blot hente PMA....
Hvor henter man sådan noget henne?
Avatar billede learner Praktikant
16. oktober 2005 - 15:46 #25
har fundet noget her:
http://www.phpmyadmin.net/home_page/index.php
Men der er utallige versioner??? Hvilken bør jeg vælge?
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:47 #26
Ja, det er faktisk det jeg siger ;)

Vil dog vente med at lægge et svar til du har løst problemet og fundet ud af om det ER det der er galt - er jo ikke ude på at snyde folk :)
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:48 #27
Hent phpMyAdmin 2.6.4-pl2. Hvis du vil være sikker på du ikke skal downlaode andet, ville jeg nok tage ZIP, men hvis du har WinRAR eller et andet pakkeprogram (udover WinZip eller Windows' indbyggede program), kan du lige så godt tage enten bzip2 eller gzip.
Avatar billede learner Praktikant
16. oktober 2005 - 15:53 #28
jeg kan se at min er version 2.6.3-pl1 bør jeg så stadig vælge 2.6.4-pl2
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 15:57 #29
Det har ingen egentlig relevans, da du skal installere en kopi seperat fra den der allerede findes.

Det var dog muligvis en ide at kontakte din serveradministrator og høre om det er muligt at få opdateret den der allerede ligger på serveren - ingen grund til at gøre livet lettere for ondsindede folk ;)
Avatar billede learner Praktikant
16. oktober 2005 - 16:06 #30
$cfg['Servers'][$i]['user']          = '';      // MySQL user
$cfg['Servers'][$i]['password']      = '';          // MySQL password (only needed

skal jeg ikke skrive mine adgangskoder til mysql herover
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 16:08 #31
Nej, det er kun til brug for config-indstillingen, hvor du bliver automatisk logget på når du prøver at gå ind på PMA - men det gælder uanset HVEM der går ind, så hvis der er en der finder din PMA adresse, er det ekstremt nemt for ham at gå ind og slette hele din database.

Med auth_type sat til http, skulle du blive bedt om at logge ind når du forsøger at tilgå PMA.
Avatar billede learner Praktikant
16. oktober 2005 - 16:13 #32
:o) det er jo super let :o)
Jeg er ved at uploade det hele med undermapper osv og kaldt mappen med de for minside.dk/pma/ istedet for phpMyAdmin-2.6.4-pl2/ som jo er lidt tæls at skrive :o)
og så regner jeg med at det kører derfra.
Kan det ik passe?
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 16:14 #33
jo, det skulle det gøre :)
Avatar billede learner Praktikant
16. oktober 2005 - 16:18 #34
Er jeg lærenem eller er det bare let :o)
Nej, lad os nu se om det virker :o)
Avatar billede learner Praktikant
16. oktober 2005 - 16:25 #35
jeg kan ikke logge på med mit login, ellers ser det ud til at virke...
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 16:26 #36
Hvilken fejl får du når du prøver? Connecter du normalt til localhost fra dine PHP-scripts?
Avatar billede learner Praktikant
16. oktober 2005 - 16:31 #37
fejl jeg får: Forkert brugernavn/kodeord. Adgang nægtet.

ved ik om det er localhost jeg connecter til... Tror det ikke. ved ikke.

Skal jeg ændre dirnavn fra pma til noget andet?
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 16:35 #38
Nej, det har ingen relevans.

Kig i de oplysninger du har fået fra din host om at koble sig op på databasen, eller kig i en af dine PHP-filer. I config.inc.php skal du rette localhost i
$cfg['Servers'][$i]['host'] = 'localhost';
til den host du normalt kobler dig op på fra dine scripts.

Sørg desuden for at du nu også skriver dit login og kodeord korrekt, nogen gange er det bare det der er problemet :)
Avatar billede learner Praktikant
16. oktober 2005 - 16:49 #39
det er en ip adresse. og jeg har prøvet, men det vil ik :o( piv
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 16:55 #40
Så er der desværre ikke noget jeg kan komme på, beklager :(

Vil foreslå du lige prøver at høre med din host om han har mulighed for at ændre den PMA installation der allerede findes, eller evt. kan installere en ekstra kopi der bruger UTF-8.

Ellers er det eneste jeg kan komme i tanke om at du manuelt siger til PMA siderne at de skal bruge UTF-8 ved at højreklikke på dem hver gang og sige Tegnsæt > Unicode (UTF-8) (IE, kan ikke lige huske hvordan man gør det i Firefox). Men det er jo ikke ligefrem en holdbar løsning på længere sigt.

Du kan lige så godt fjerne den PMA installation jeg fik dig til at lave, men gem en kopi lokalt i tilfælde af at din host vil have dig til at bruge den - så slipper du for at skulle genhente :P
Avatar billede learner Praktikant
16. oktober 2005 - 17:00 #41
Tak for det hele :o)
Avatar billede learner Praktikant
16. oktober 2005 - 17:20 #42
ps kan man ikke teste med php om der står Bøger eller Bøger i databasen. altså tjekke om det er PMA der bare viser forkert. Eller om det er noget andet galt
Avatar billede pidgeot Nybegynder
16. oktober 2005 - 17:42 #43
Det PMA viser er skam rigtigt nok. Den viser det bare med et forkert tegnsæt (latin1/iso-8859-1 i stedet for utf-8), og det er det der skal ændres.
Avatar billede learner Praktikant
16. oktober 2005 - 17:46 #44
:O) det glæder mig at høre :o)
Håber virkelig du har ret.
Avatar billede learner Praktikant
17. oktober 2005 - 13:44 #45
Nu har jeg skrevet til host og afventer svar fra dem :o)
Avatar billede learner Praktikant
17. oktober 2005 - 14:10 #46
De har allerede rettet i config.inc.php til :
$cfg['DefaultLang']= 'da-utf-8';
$cfg['DefaultCharset'] = 'utf-8';

Det hjalp ikke :o( Æv
Avatar billede learner Praktikant
18. oktober 2005 - 22:52 #47
Nå hej igen nu har jeg fået min 'egen' PMA op at køre. :o)

Jeg får denne advarsel når jeg lige er logget 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."

Og når jeg kigger i mine tabeller, så er æøå stadig vist som 'A,' osv. så umiddelbart ingen ændring der :o(

Jeg har prøvet med disse løsninger:
$cfg['Lang'] = 'utf-8'; i config.inc.php (så forsvandt advarslen)
samt extension=php_mbstring.dll i php.ini (ingen effekt at se)
Men æøå vises stadig som 'A,' osv

Hvad dælan kan jeg gøre?
Please hjælp mig en eller anden :o)
Avatar billede learner Praktikant
10. december 2005 - 12:28 #48
jeg har stadig problemet.

Senest har jeg prøvet at køre en query ("SET NAMES 'utf8'") i PMA. Det skulle muligvis hjælpe, men ikke hos mig desværre :o(

anyone?
Avatar billede learner Praktikant
28. januar 2006 - 08:38 #49
lukker

jeg har løst problemet nu, men jeg er ærlig talt ikke helt klar over hvad der var løsningen. så jeg kan desværre ikke forklare det herinde lige nu.

i skal have mange tak for jeres indlæg som sikkert har bragt mig på rette vej :o)

vær venlig at smide svar og jeg deler point ud
Avatar billede pidgeot Nybegynder
28. januar 2006 - 11:49 #50
Det regner vi så med de har *G*
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