Gå til innhold

[Løst]ÆØÅ fungerer ikkje samen med MySQL


Anbefalte innlegg

Hei,

Eg har eit normalt ganske normalt problem. Eg får ikkje ÆØÅ til å fungere når eg henter data frå MySQL databasa mi. Eg har satt sammenlikninga til utf8_unicode_ci samtidig som eg kjører <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> i toppen av PHP dokumentet samen i <HEAD> taggane.

 

Prøvde å kjøre spørringa mysql_query("SET NAMES 'utf8'"); som eg fann i ei anna post her på forumet, men det fungerte ikkje. Prøvde óg å skrive header("Content-Type: text/html;charset=UTF-8"); i toppen av PHP dokument utan hell..

 

Kor kan problemet ligge? Eg kjenner eg vart litt varm no, når eg ikkje finn det ut. Har lest rundt på nett utan at eg forstår så mykje meir.. Eg har forøvrig skreve inn dataene manuelt i PHPMyAdmin, og bruker ikkje ei ekstern side til å poste dataene. Så då kan dei ikkje ha blitt konverterte til anna teknsett på vegen heller?

 

Takker for alle svar!

Kjører forøvrig lokal MAMP server på min Mac om det skulle bety noko.

Lenke til kommentar
Videoannonse
Annonse

htmlentities er en stygg løsning på problemet. Nå er det svært vanskelig å hjelpe til noe særlig så lenge vi ikke veit hvordan eksempelvis særnorske tegn blir seendes ut ved utskrift. Er det eksempelvis � (svart «boks» med hvit spørsmålstegn) er det sannsynligvis ISO-8859-1 vist som UTF-8. Er det to tegn der det skulle vært et, f.eks Ã¥ i stedet for en å, er det UTF-8 vist som sannsynligvis ISO-8859-1. Jeg har skrevet noe om hvordan man bruke UTF-8 ordentlig her. For å lage et lite sammendrag av det:

  • Angi tegnsett i HTTP-header:
    header('Content-Type: text/html; charset=utf-8');


  • Angi tegnsettet i HTML-dokumentet (for sikkerhetsskyld)
    <meta http-equiv=Content-Type content="text/html; charset=utf-8">


  • Angi tegnsettet i ev. forms du har (skal være unødvendig, men igjen, for sikkerhetsskyld)
    <form accept-charset="UTF-8" method="post">
    <!-- Input stuff here -->
    </form>


    I utgangspunktet er dette helt unødvendig, men skulle brukeren av en eller annen grunn ha overstyrt tegnsettet i nettleseren vil dataene inn alikevel være korrekt. Dessuten har det den ekle tendensen å sperre for alle andre tegnsett i Firefox når man viser siden :evil:
     

  • Valider at input faktisk er UTF-8:
    $validUTF8 = mb_check_encoding($string, 'UTF-8'); //will give true if valid, false if not


  • Sett tegnsett ved tilkobling til MySQL:
    mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'");


  • Pass på å bruk funksjoner som faktisk støtter UTF-8

Gjør man det skal ting fungere og vises korrekt.

Endret av Ernie
Lenke til kommentar

Tusen takk for utfyllande svar!

Eg hadde kontrollert alt du sa, bortsett fra at eg hadde gjort ein makaber feil.

Leste eit litt utydeleg innlegg om mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); i ei anna post, og kjørte det som ei spørring i MySQL. Kvifor eg gjorde det anar eg ikkje - men når eg satte det i PHP scriptet mitt såg eg både æ, ø og å'ar!

Du redda meg no, hvis ikkje hadde eg satt informasjonen i flatfiler (fyfy!) :p Igjen, tusen takk!

 

Redigert: For å hjelpe nokon andre kan eg gjerne utdype litt.

Eg har mest sannsynleg hatt ISO-8859-1 då tekna vart til � (svarte bokstar med kvite spørsmålsteikn).

 

Og problemet vart løyst med å sette inn mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); i PHP koda, då naturlegvis forutsatt at eg hadde velt UTF-8 som standard i phpmyadmin :)

Endret av steffenz
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...