Avatar billede Ekspertbruger Nybegynder
12. august 2011 - 18:09 Der er 26 kommentarer og
1 løsning

Æ og ø vises forkert?

Hej eksperter.

Mit forum viser æ og ø forkert.

Jeg har sørget for at gemme mine filer u utf-8, lave et metatag i hederen med chartset utf og jeg tvinger mit ftp program til det skal være utf-8..

Så problemet må være i databasen?

Hvordan kan jeg lige rette det?

På forhånd tak for hjælpen :)
Avatar billede jaboy Nybegynder
12. august 2011 - 20:14 #1
hvordan vises de "forkert" ?!

og hvilken forum "software" bruger du ?!
Avatar billede Ekspertbruger Nybegynder
12. august 2011 - 21:03 #2
Beklager at jeg ikke lige fik uddybbet mig nok :)


Jeg koder i php og har mysql database :)

Det skal lige siges at min tabeller har utf8_danish_ci :)

Altså, tegnene er ligner sådan slags kinesisk, men det kommer kun fra en af mine tabeller. :)

Min topic tabel viser det rigtige, men min kategori og post tabel viser dem forkert :)
Avatar billede Slettet bruger
12. august 2011 - 22:40 #3
Kan du starte med at tjekke om de tekster du har problemer med, er blevet gemt korrekt i mysql databasen?
- Hvis den også viser "kinesiske" tegn her, så må det være den måde du uploader teksterne på der går galt, får det lyder ikke som om der skulle være problemer med at gemme æøå i tabellerne hvis de er sat op til utf8.
- Hvis det ser korrekt ud i databasen, så må det være fordi du spytter dem forkert ud i php koden. Bruger du evt. iframes på din side, som måske ikke vises i utf8 og derfor får æøå til at se mærkelige ud? Nu er jeg ikke en php-haj, men du kan også prøve utf8_encode() på teksterne inden du viser dem på din php side, men du siger også du kun har problemet et sted i din php kode.
Avatar billede Ekspertbruger Nybegynder
12. august 2011 - 23:53 #4
Den spytter det forkert ind i begge tabeller, men viser det korrekt fra en af dem - prøver lige at tjekke min side igennem, der jeg poster :)
Avatar billede Ekspertbruger Nybegynder
13. august 2011 - 00:24 #5
Jeg kan ikke finde nogen fejl i den fejl jeg poster - den er gemt utf-8 og har et metatag i headeren: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Hmm utf8_encode() ? Hvordan? :)
Avatar billede Slettet bruger
13. august 2011 - 01:23 #6
Jeg kunne forestille mig at når du prøver at vise de data du henter fra databasen med php, så bliver de skrevet ud i f.eks. ISO 8859-1, og da din webside fortæller browseren at siden er utf-8 encoded, så får du æøå skrevet ud som to underlige tegn hver. Så du kunne prøve med utf8_encode($a), hvor $a er en tekst du har hentet fra mysql. Jeg skal ikke kunne sige om der er bedre måder at gøre det på i php.
Avatar billede Slettet bruger
13. august 2011 - 01:27 #7
Faldt lige over denne tråd som måske kan hjælpe dig:
http://www.eksperten.dk/spm/837371
Avatar billede Ekspertbruger Nybegynder
13. august 2011 - 01:44 #8
Jeg har skam prøvet begge metoder :)

utf8_encode($posts_row['post_content']); - den gik ikke.

Set name byttede bare om på, hvilke af tabellerne der viste rigtigt..
Avatar billede Ekspertbruger Nybegynder
13. august 2011 - 02:26 #9
jeg valgte at prøve igen  med set names og set characteres med lidt mere held denne gang - nu indsætter den i det mindste æ ø og å i databasen - og min kategori oversigt viser endda rigtigt nu.

mysql_query("SET NAMES utf8");
mysql_query("SET character_set_results='utf8&#8242;");

hm.. Desværre hjalp det ikke på min topic eller post tabel - den skiftede bare tegn til ¸Ã&#65533;¦ Ã&#65533;¸ Ã&#65533;¸ Ã&#65533;¸ Ã&#65533;¦Ã&#65533;¸..
Avatar billede olsensweb.dk Ekspert
13. august 2011 - 12:18 #10
er du sikker på at din db connection er utf-8 ??
prøv at sette mysql_set_charset http://dk.php.net/manual/en/function.mysql-set-charset.php
så din db connection ser sådan ud:
<?php
    $conn = mysql_connect ("localhost", "root", "", true);
    if (! $conn )     die( 'Could not connect: ' . mysql_error ());
    mysql_select_db("test") or die('Could not select database ');
    mysql_set_charset('utf8',$conn);
?>


brug af utf8_encode() / utf8_decode() vil altid være en nødløsning, og svarer til at pisse i bukserne, det varmer kortvarigt.
Avatar billede Ekspertbruger Nybegynder
13. august 2011 - 14:12 #11
Har jo prøvet mysql_query("SET NAMES utf8");
mysql_query("SET character_set_results='utf8&#8242;");, men så bliver det rigtige sat ind i databasen, men det der kommer ud er forkert :)
Avatar billede olsensweb.dk Ekspert
13. august 2011 - 14:38 #12
nogle citater fra http://dk.php.net/manual/en/function.mysql-set-charset.php

Note:
This is the preferred way to change the charset. Using mysql_query() to execute SET NAMES .. is not recommended.


nabeelmoidu at gmail dot com 09-Jun-2008 05:11
Here's an example of how to use this feature :
I'm using  PHP 5.2.5 from http://oss.oracle.com/projects/php/
I wanted to store arabic characters as UTF8 in the database and as suggested in many of the google results, I tried using
mysql_query("SET NAMES 'utf8'");
and
mysql_query("SET CHARACTER SET utf8 ");
but it did not work.
Using the following, it worked flawlessly
$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);
Avatar billede olebole Juniormester
13. august 2011 - 18:04 #13
<ole>

Jeg er helt på linje med ronols. Jeg vil dog lige påpege en mulig, men ofte overset, fejlkilde:

Pas på, hvis du bruger phpMyAdmin til at indsætte, rette eller tjekke indsatte data. Gør du det, skal du sikre dig 100%, at alle phpMyAdmins filer indeholder den korrekte charset-meta, samt at dens filer er gemt korrekt.

/mvh
</bole>
Avatar billede Ekspertbruger Nybegynder
14. august 2011 - 14:08 #14
Tak for jeres svar :)

problemet er at nu står det korrekte i min database - altså den indsætter å æ ø og ikke mærkelige tegn.

Til gengæld så udskriver den de forkerte tegn, så der må være en fejl med min udhentning.
Avatar billede olebole Juniormester
14. august 2011 - 16:55 #15
"problemet er at nu står det korrekte i min database - altså den indsætter å æ ø og ikke mærkelige tegn."

Hvor ved du det fra? Som sagt skal du være påpasselig med, hvad du bygger din iagttagelse på. Bruger du phpMyAdmin, skal du være helt sikker på, den er sat helt korrekt op. Vi har set masser af eksempler på, at phpMyAdmin har kørt iso-8859-1, mens spørgeren var overbevist om, den kørte utf-8.

Ved du objektivt, hvordan din phpMyAdmin er sat op?
Avatar billede Ekspertbruger Nybegynder
14. august 2011 - 17:37 #16
ja kører med mysql :)

Altså, for det første kan jeg jo se at bogtaverne er anderledes - det er ikke mere kinesiske tegn, men ø æ å :)

For det andet kører jeg med Kollation (Collation)    utf8_danish_ci - det er så objektivt, som det kan blive, da det er det, som står i min mysql database oplysninger.

Som vel må være rigtigt nok?
Avatar billede olebole Juniormester
14. august 2011 - 17:47 #17
"Altså, for det første kan jeg jo se at bogtaverne er anderledes - det er ikke mere kinesiske tegn, men ø æ å"

Nej, det kan du ikke. Data i en database er ikke synlige for det menneskelige øje. Hvis du skal se tegnene, må du bruge et værktøj, der kan tolke data i databasen og fremvise dem. Hvis dette værktøj ikke er korrekt opsat, kan du ikke stole på det, du ser.

Nu prøver jeg for sidste gang: Hvad bruger du til at administrere din database med? Hvis det er phpMyAdmin, ved du så objektivt, hvordan den er sat op - og i så fald, hvordan ved du det?
Avatar billede Ekspertbruger Nybegynder
14. august 2011 - 18:32 #18
Aha, beklager at jeg ikke forstod dig ordentligt.

hmm - jeg vil næsten sige ja og nej, da jeg ikke er 100 % sikker på om jeg objektivt ved hvordan indstillingerne er.

Den måde jeg mener at kunne se det på, er at jeg kan se indstillingerne for hele min mysql.

Hvis jeg så går ind på variabler - server-variabler og indstillinger:
character set client    utf8   
(Global værdi)    latin1   
character set connection    utf8   
(Global værdi)    latin1   
character set database    latin1   
character set filesystem    binary   
character set results    utf8   
(Global værdi)    latin1   
character set server    latin1   
character set system    utf8   
character sets dir    /usr/share/mysql/charsets/   
collation connection    utf8_general_ci   
(Global værdi)    latin1_swedish_ci   
collation database    latin1_swedish_ci   
collation server    latin1_swedish_ci   

Det ser ud til at du muligvis har ret - der er hvert latin1 :)
Avatar billede olebole Juniormester
14. august 2011 - 18:49 #19
- og hvis du kikker i kildekoden i din browser, når en administrationsside (en side, hvor du kan se, oprette, slette og rette data i en tabel) i phpMyAdmin er loaded i din browser, hvordan ser Content-Type meta'en så ud?
Avatar billede Ekspertbruger Nybegynder
14. august 2011 - 19:08 #20
Der står: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Avatar billede Ekspertbruger Nybegynder
15. august 2011 - 20:23 #21
Hvis det var det du mente? :)
Avatar billede Ekspertbruger Nybegynder
16. august 2011 - 13:04 #22
Kunne jeg evt. bruge iso istedet eller er det for forældet?
Avatar billede olebole Juniormester
16. august 2011 - 13:13 #23
Sorry, jeg havde overset, dine kommentarer. Er på vej ud af døren, men prøver at få tid til at kikke på det i aften  =)
Avatar billede Ekspertbruger Nybegynder
16. august 2011 - 17:01 #24
Jeg takker hvert fald for din hjælp :)

Jeg er ikke så skarp til mysql :)
Avatar billede Ekspertbruger Nybegynder
17. august 2011 - 21:38 #25
Andre der har forslag?
Avatar billede Ekspertbruger Nybegynder
24. august 2011 - 17:27 #26
Hvis ingen kommer med noget de næste dage - kan jeg lige så godt lukke spørgsmålet, men venter lige og ser :)
Avatar billede Ekspertbruger Nybegynder
10. september 2011 - 20:58 #27
svar
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