ÆØÅ erstattes med ?

Tags:    encoding uft8 php mysql

<< < 12 > >>
Jeg har et problem på min hjemmeside.

Nogle steder på min hjemmeside bliver ÆØÅ erstattet af ?, mens den andre steder ikke gør.

Dette gælder både for de gange jeg skriver ÆØÅ direkte ind i koden, samt når jeg henter noget ud fra en MySQL database.

Min database er sat til
MySQL Tegnsæt: UTF-8 Unicode (utf8)

Mens der på alle sider er inkluderet:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Nogle løsningsforslag?



12 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 15 karma
Sorter efter stemmer Sorter efter dato
du har selvføgelig gemt dine siden i formatet utf-8 uden BOM

hvis det kun er fra din db så set dit connection charset
http://dk.php.net/manual/en/function.mysql-set-charset.php

og kom så vær fra det gamle API :) brug mysqli
http://dk.php.net/manual/en/mysqli.set-charset.php




Bruger du mysql eller mysqli?

Med din meta-tag, fortæller du browseren, at dit dokument er utf-8. Dette er ikke det samme, som at dokumentet er utf-8. Brug en editor, hvor du sætte den korrekte tekst-enkodning. F.x. notepad++.




Jeg fik løst problemerne med udtræk fra DB ved

det var den nemme, en klassiker :), det burde ikke være nødvendigt at sætte connection til utf-8, hvis alle led i db kørte utf-8


Dog er der stadigvæk problemer med ren tekst i php

hvad sker der når du åbner php filen i din editor ??, står æøå korrekt der ?? og er charset utf-8 (står nederst i højre hjørne i notepad++).
hvis det ikke står ikke står korrekt skal du rette source som det første.
hvis det der står korretkt kunne det være externe filer du includerer, der ikke er utf-8 incodet.




hvis du er heldig kan du i notepad++ gå ind i
menu -> encoding ->convert to UTF-8 without BOM, og så klarer den det for dig. ellers er du nødt til at rette det manuelt



Machael > Vi skriver 2012. Du må gerne skrive æøåÆØÅ direkte i dine filer nu : O )



Indlæg senest redigeret d. 06.09.2012 16:23 af Bruger #13010
Det er sikkert fordi du bruger funktioner som ucfirst() i din PHP kode.

Du skal bruge den tilsvarende funktion mb_ucfirst() som forstår multibyte tegn.

Disse mb_* funktioner findes til en del funktioner som har med tekst at gøre.

http://php.net/manual/en/ref.mbstring.php

http://scootergrisen.dk/htmlgrisen/kode_strenge.php#multibyte_funktioner



Indlæg senest redigeret d. 06.09.2012 14:21 af Bruger #13010
Jeg bruger mysqli, og har i notepad++ sat mine sider til uft-8 uden BOM..

Jeg tager et kig på dine links Ronny

tak

EDIT:
Jeg fik løst problemerne med udtræk fra DB ved
$db->set_charset("utf8");

Dog er der stadigvæk problemer med ren tekst i php



Indlæg senest redigeret d. 06.09.2012 14:49 af Bruger #14602
I højre hjørne står der korrekt UFT-8, og i notepad++ erstattes
æ med xE6
ø med xF8
å med xE5

Den retter dette automatisk hvis jeg sætter formatet til UTF-8.




Jeg følte jeg havde prøvet det 100 gange - men det virker nu.

EDIT:

Ja, jeg troede lige jeg var så heldig at det hele virkede.

Jeg har som sagt sat $db->set_charset("utf8");, og det virker på alle udtræk fra DB på nær datatypen er "text"



Indlæg senest redigeret d. 06.09.2012 16:09 af Bruger #14602
Æ & AElig;
æ & aelig;
Ø & Oslash;
ø & oslash;
Å & Aring;
å & aring;

Du skal bare lige huske at uden mellemrum efter &

Kan du bruge det? Det hjalp mig da jeg havde et lignende problem.



Indlæg senest redigeret d. 06.09.2012 16:20 af Bruger #17141
<< < 12 > >>
t