Æ Ø Å forskelligt i IE og Firefox

Tags:    databaser

Jeg har brugt MySQL på min hjemmeside så jeg har den på flere forskellige sprog.

Der er bare det problem at æ ø å og andre specielle tegn ikke bliver vist korrekt.

I Firefox er det, det tekst der bliver hentet fra databasen der ikke vises korrekt og i IE er det, det tekst som står direkte i html'en der ikke bliver vist korrekt.

Hvordan kan det lade sig gøre?

Jeg har prøvet at indsætte forskellige UTF8 og andre ISO codes.



Giv et link så vi kan teste.

Det første du skal gøre er at sætte en HTTP header eller et HTML meta tag til at indikere den tegnkodning (fx ISO-8859-1 eller UTF-8), som du bruger. Dem skal være det samme som den du bruger i din HTML editor.

Jeg har lidt hjælp til hvor den skal sidde og hvordan den skal se ud på min hjemmeside her: http://www.jesperkristensen.dk/webstandarder/doctype-chooser/

Det næste du skal gøre er at angive din valgte tegnkodning i din MySQL forbindelse. I MySQL 5 gøres det ved som det første at sende følgende query til databasen: SET NAMES 'charset_name', hvor charset_name fx er ISO-8859-1 eller UTF-8. Bruger du MySQL 4 eller ældre, er det noget mere kompliceret.



Indlæg senest redigeret d. 10.09.2009 12:57 af Bruger #3143
På alle mine html sider står meta til utf8.

Jeg bruger mysql over one.com da det er der jeg har min hjemmeside.

Ud for mine tabeller kan jeg se at der står (Collation) og derunder står der latin1_swedish_ci.

Kan det ændres?

Før brugte jeg en VARCHAR(255) der hvor jeg havde noget tekst. Så lavede jeg det om til BLOB. ved at gøre det viser den det hele som den skal i Firefox. Både teksten i databasen og den i htmlen.

Det er IE det slet ikke virker i.





> På alle mine html sider står meta til utf8.

Det er ikke nok. HVORDAN står det? Giv gerne et link.

> Ud for mine tabeller kan jeg se at der står (Collation) og derunder står der latin1_swedish_ci.

I dette tilfælde har Collation ikke noget med sagen at gøre. En forkert collation kan er erstatte visse tegn med spørgsmålstegn, men den kan ikke vise tegn forkert, som du oplever.

> Før brugte jeg en VARCHAR(255) der hvor jeg havde noget tekst. Så lavede jeg det om til BLOB. ved at gøre det viser den det hele som den skal i Firefox. Både teksten i databasen og den i htmlen.

BLOB er forkert at bruge, men hvis man kun har MySQL 4 eller 3, kan man blive nødt til at bruge den, men det har nogle ulemper.

Du kan se på forsiden af din phpMyAdmin hvilken version af MySQL der bruges.



phpMyAdmin 2.9.2-Debian-1.one.com1

Serverversion: 5.0.32-Debian_7etch11-log

MySQL klientversion: 5.0.32

Ved ikke om du kan blive klogere af det?
(er rimelig ny i det)



Indlæg senest redigeret d. 11.09.2009 16:01 af Bruger #15083
Du mangler en bindestreg i "UTF-8". Du har skrevet "utf8", hvilket browseren ikke genkender, og derfor bliver den ignoreret.

Muligvis kan kommentaren i HTML-koden give problemer:

<!-- InstanceBegin template="/Templates/int.dwt" codeOutsideHTMLIsLocked="false" -->

Den står før dit <meta>, og den indeholder tekst. Det kan måske få nogle browsere til at ignorere din <meta>. Jeg er ikke helt sikker.

Vedrørende MySQL:
Du har den rigtige version af MySQL, så du kan bare bruge:
mysql_query("SET NAMES 'utf8'");
eller lignende afhængigt af hvilkt php-api du bruger.

Læg mærke til at der ander steder skal være bindestreg i "UTF-8", men det må der ikke være i MySQL.



Nu viser den øæå rigtig i IE også ved det teskt som står i htmlen. (mangele bindestreg) Tak for det :)

Da jeg er rimelig ny i det her, forstår jeg ikke lige helt hvor det er jeg skal sætte det der query... set name utf8 ind henne?

Skal de php'en hvor jeg kalder mine funktioner fra eller skal jeg nulstille databasen og sætte det ind der?



Der hvor du i forvejen har noget lignende:

mysql_connect('localhost', 'lise-grafik', '****');
mysql_select_db('list-grafik');

skal du indsætte det førnævnte, så der samlet kommer til at stå:

mysql_connect('localhost', 'lise-grafik', '****');
mysql_select_db('list-grafik');
mysql_query("SET NAMES 'utf8'");

Navnene er muligvis ikke helt de samme som dem jeg har brugt.



Det virker bare :D

Helt kanont. Tusind tak for hjælpen.



t