Avatar billede alkrojen Nybegynder
16. april 2009 - 09:53 Der er 25 kommentarer

'?' i stedet for danske bogstaver

Hej Eksperter

Når jeg henter data fra MySQL med PHP, vises alle danske bogstaver som '?' istedet. Se outputtet på linket herunder:

http://coreprofile.dk/EnneagramTest/FreeTest.php

Det er tilsyneladende kun de tekster der hentes fra databasen der er fejl i. På kanppen "Næste", står æ'et korrekt.

Hvad er der galt?

mvh.

Allan
Avatar billede majbom Novice
16. april 2009 - 09:58 #1
du har nogle problemer med dine tegnset.

bruger du samme charset i databasen som i dine php-filer?
Avatar billede lakridserne Nybegynder
16. april 2009 - 10:00 #2
Har du prøvet at ligge data'ene ind med:

æ = æ
ø = ø
å = å

?
Avatar billede alkrojen Nybegynder
16. april 2009 - 10:14 #3
splazz:
jeg er relativ ny inden for PHP og MySQL. Hvordan ser jeg hvilke tegnsæt jeg bruger i PHP-filerne, eller fastsætter det?
I phpMyAdmin står der at jeg bruger:

MySQL Tegnsæt:  UTF-8 Unicode (utf8)
MySQL forbindelses-sammenkøring: utf8_unicode_ci
Sprog - Language Info: Dansk - Danish

lakridserne:
Jeg vil helst undgå at skulle ændre alle danske bogstaver, hvis det er muligt, da teksterne er lagt ind i databasen. Og i øvrigt vises korrekt i phpMyAdmin.
Så mon ikke der er en simplere løsning?

mvh.
Allan
Avatar billede majbom Novice
16. april 2009 - 10:15 #4
sætter du et charset i starten af dine filer?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Avatar billede majbom Novice
16. april 2009 - 10:16 #5
som selvfølgelig skal være i <head>-sektionen
Avatar billede olebole Juniormester
16. april 2009 - 13:30 #6
<ole>

- og så sørger du for, at alle dine dokumenter er gemt som utf-8. Tjek evt. forneden i Notepad's 'Gem Som' dialog

/mvh
</bole>
Avatar billede alkrojen Nybegynder
17. april 2009 - 15:46 #7
Jeg har prøvet at indsætte:

echo "<html><head>";
echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>";
echo "</head>";

øverst i min php fil. Resultatet er nogle lidt pænere ?-tegn.

Se selv her: http://coreprofile.dk/EnneagramTest/FreeTest.php

Jeg bruger en Firefox browser kan det have noget at sige?

Har også gemt alle filer i UTF-8 format. Hjælper ikke..
Avatar billede majbom Novice
17. april 2009 - 18:38 #8
hvis du går ind i phpmyadmin og kigger på dataene, hvordan ser det så ud?
Avatar billede webweaver Praktikant
17. april 2009 - 23:27 #9
Husk et site bygges op således;

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
</body>
</html>

Det kan hurtigt give sjove resultater, hvis man ikke har doctype, tegnsæt med og så videre! Prøv det til at starte med :)
Avatar billede olebole Juniormester
18. april 2009 - 14:43 #10
Njaahhh, iso-8859-1 er nok ikke det bedste tegnsæt at bruge idag - og DTD'en har intet at sige i denne forbindelse. Hvis spørgeren blot gør, som det allerede er beskrevet i tråden, får han ikke de tegnsætproblemer, der beskrives i spørgsmålet  =)
Avatar billede webweaver Praktikant
18. april 2009 - 20:16 #11
Det har da ikke hjulpet indtil videre ifølge spørgeren.

Hvorfor bør man ikke benytte iso-8859-1 længere? :)
Avatar billede olebole Juniormester
19. april 2009 - 00:06 #12
Nej, det er fordi, han ikke har gjort som beskrevet  =)

Resten af verden og alle nye tekniker benytter Unicode - langt de fleste utf-8. I JavaScript har ANSI funktionerne til at encode URL'er med således længe været deprecated - og er erstattet med Unicode functioner.

Ajax giver derfor ikke mening med iso-8859-1 - og udveksling af data med resten af verden bliver vanskeligere
Avatar billede webweaver Praktikant
19. april 2009 - 10:19 #13
Enig, det er nyere. Unicode implementerer jo ISO blandt andet og IEC, så den er der stadig. Men kun at bruge iso-8859-1 vil også fungere ja alle steder tror jeg stadig. Men fair nok, man kan self. lige så godt holde sig opdateret :)

Men udover det, kan jeg ikke se hvad det har med Ajax at gøre i denne tråd. :)

Alkrojen, har du fået det til at funke?
Avatar billede olebole Juniormester
19. april 2009 - 12:57 #14
Ajax var blot et eksempel på en af de nyere teknikker  =)

"Unicode implementerer jo ISO blandt andet og IEC, så den er der stadig" >> Nej, de har intet med hinanden at gøre.

"Men kun at bruge iso-8859-1 vil også fungere ja alle steder tror jeg stadig" >> Ikke, hvis WWW skal bruges, som det er tænkt - og som det bliver brugt. Vil man kommunikere med resten af verden og udveksle data på tværs af sproggrænser, duer lokale tegntabeller naturligvis ikke.

Man skal ikke holde sig opdateret for at bruge det nyeste - men for at bruge det bedste  ;o)
Avatar billede alkrojen Nybegynder
20. april 2009 - 11:41 #15
Olebole:
Jeg har gemt alle filer i UTF-8 format.
Hvad er det du mener jeg bør gøre?

Webweaver:
Jeg skal have sitet til at fungere med Unicode UTF-8, da det skal oversættes til en masse sprog.

I Internet Explorer vises nu kinesiske/japanske tegn i stedet for ?. I Firefox er det stadig ? tegn.
Meget mystisk, hvad er der galt???
Avatar billede olebole Juniormester
20. april 2009 - 12:45 #16
Hvis det er database indhold, den er galt med, ligger dit problem dér.

Er det statisk tekst i dokumenterne, der fejler, er dit statiske indhold ikke utf-8 indhold.

Det er svært at afgøre, hvad det præcist er, du gør galt, når man ikke selv sidder med projektet - men ifølge W3C's validator består din kode ikke af utf-8 indhold.

Prøv at smide dokumentet ud og lave et nyt, som fra starten er et utf-8 kodet dokument - og undlad at bruge copy/paste, når du laver det nye dokument.
Avatar billede majbom Novice
20. april 2009 - 12:51 #18
har du prøvet hvad jeg skrev i #8? (det er det samme ole er inde på i #16)
Avatar billede alkrojen Nybegynder
21. april 2009 - 08:59 #19
splazz:

I phpMyAdmin står teksterne helt korrekt med danske bogstaver

olebole:

Den statiske tekst vises også ok, se selv:
http://coreprofile.dk/EnneagramTest/FreeTest.php
(øverste på siden)

Det må altså være et sted imellem databasen og php siden det går galt??
Avatar billede webweaver Praktikant
21. april 2009 - 10:35 #20
Hmm siden det nu skal være så besværligt, så kan man gå i en helt anden retning. Det mest korrekte ville dog være at løse problemet hvor tegnsættet deklareres.

Der er dog denne løsning, som måske vil virke.
Det kræver dog at teksten stadig er intakt fra databasen af og frem til udtrækket. Herefter går det så i smadder tyder det på.
Sæt dette ind straks efter dit udtræk. Forhåbentligt er din tekst ikke smadret allerede der.

$html_letters = array("æ", "Æ", "ø", "Ø", "å", "Å");
$letters_dansk = array("æ",      "Æ",      "ø",        "Ø",        "å",      "Å");
$besked = str_replace($html_letters, $letters_dansk, $besked);

Alternativt kan du bruge scriptet på den side hvor du smider teksten i databasen allerede. Så er du sikker på at du får det med.

Du ændrer bare $besked til din egen string som indeholder teksten. Husk at ændre den forrest og bagerst :)
Avatar billede webweaver Praktikant
21. april 2009 - 10:37 #21
Argh, okay Eksperten kan ikke vise scriptet korrekt.
Se her istedet, http://pastebin.com/m6456fa5a
Avatar billede alkrojen Nybegynder
21. april 2009 - 11:08 #22
webweaver:

Sitet skal kunne fungere med alle sprog, og dermed alle landes særlige tegn. Derfor er det vigtigt at det er Unicode hele vejen igennem, og det hjælper derfor ikke at jeg skal sidde og diffinere særlige tegn for hvert enkelt land.

Der må være en nemmere løsning. Både databasen og php-filen er i UTF-8 format. Så det må¨være derimellem det går galt??
Avatar billede webweaver Praktikant
21. april 2009 - 13:04 #23
Men andre tegn vises vel fint?
Det er kun æ, ø og å, right?
Avatar billede alkrojen Nybegynder
21. april 2009 - 13:14 #24
Jeg har indtil videre kun prøvet med æ, ø, å.
Men kunne sagtens forestille mig at problemet også findes ved f.eks: ü, ö, ä o.s.v
Avatar billede majbom Novice
04. november 2010 - 11:28 #25
problem løst?
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