Avatar billede majbom Novice
05. august 2008 - 16:21 Der er 24 kommentarer og
1 løsning

firkanter i stedet for gåseøjne - AJAX

hej experter

jeg har en ajax-funktion som henter noget data fra en database via en php-fil.

det virker næsten, men gåseøjne bliver vist som firkanter i internet explorer 6 og 7, men i firefox og opera virker det godt nok.

jeg har prøvet at urlencode det i php-filen, men det gør ingen forskel.

nogle der kan hjælpe her?
Avatar billede Slettet bruger
05. august 2008 - 16:27 #1
kunne det være noget UTF8 snavs?
Avatar billede majbom Novice
05. august 2008 - 16:38 #2
glemte at skrive halvdelen af det jeg gerne ville dele med jer før :s - sorry

der er ingen problemer med æ,ø og å.
de 3 filer der bliver brugt, er alle ISO-8859-1
jeg har:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
og
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
i htm-filen
øverst i php-filen står: header('Content-Type: text/html; charset=ISO-8859-1'); (ja, efter "<?php" selv ;) )

så tror jeg at det hele var der...
Avatar billede Slettet bruger
05. august 2008 - 16:50 #3
men stadigvæk hvad er " kodet som i DBen?
Avatar billede majbom Novice
05. august 2008 - 16:54 #4
kollation står til swedish_ci - burde nok være dansih, men det gør vil ikke den store forskel?
Avatar billede majbom Novice
05. august 2008 - 16:55 #5
tjekkede lige phpmyadmin en ekstra gang, der står:
MySQL Tegnsæt: UTF-8 Unicode (utf8)

kan jeg ændre det, uden at det ændrer på dataen?
Avatar billede olebole Juniormester
05. august 2008 - 20:07 #6
<ole>

Du kan ikke bruge iso-8859-1 i forbindelse med Ajax. Brug utf-8 i stedet  =)

/mvh
</bole>
Avatar billede majbom Novice
05. august 2008 - 20:59 #7
hmm, det har nu ellers gået meget godt i et tidligere projekt, men der var vidst heller ikke gåseøjne involveret...

kan jeg konvertere min db til utf-8 uden problemer?
Avatar billede olebole Juniormester
05. august 2008 - 22:45 #8
At man ikke kan bruge iso-8859-1, er ikke specielt for Ajax - det skyldes JavaScript, hvor ANSI funktioner har været deprecated siden version 1.5, som kom med NS 6.0 omkring 1999. Da hele idéen med WWW er international kommunikation, er det jo heller ikke smart at bruge et tegnsæt, som kun er anvendeligt med ganske få, små lande  =)

Ja, du kan sagtens ændre din DB. Du bør også bruge en meta som:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

- ligesom dine dokumenter bør gemmes som utf-8 (sættes i din editor).
Avatar billede olebole Juniormester
05. august 2008 - 22:46 #9
Om det så klarer problemet med gåseøjne, ved jeg ikke. Du skriver ikke noget om, hvordan du returnerer data, men f.eks. PHP's egen JSON-behandling kan sagtens håndtere gåseøjne  =)
Avatar billede majbom Novice
06. august 2008 - 10:06 #10
er det mig, der mangler noget, eller er det min editor der sutter?

når jeg ændrer mine filer til utf-8, får jeg "header already sent"-fejl når det når til session_start(); (som står som det første efter "<?php")

jeg har prøvet at lave en fil som utf-8 hvor der kun står:

<?php
session_start();
?>

og der gør den det osse, men ikke hvis den bliver encodet som ISO-8859-1...
Avatar billede w13 Novice
06. august 2008 - 10:06 #11
Hvilken editor bruger du?

Måske skyldes det BOM (Byte Order Mark)? :S (Hader det skidt..)
Avatar billede majbom Novice
06. august 2008 - 10:15 #12
bruger notepad++

rettede fra "utf-8" til "utf-8 (without BOM)" - det hjalp :)
Avatar billede w13 Novice
06. august 2008 - 10:23 #13
Ja, det tænkte jeg nok. BOM er vist 3 usynlige tegn, som bliver sat ind forrest i dokumentet. =/
Avatar billede majbom Novice
06. august 2008 - 10:33 #14
okay, ubderlig ting...
Avatar billede majbom Novice
06. august 2008 - 11:25 #15
først lige endnu et udbrud: FFS, hvorfor opretter den ikke en post, når man sidder og har skrevet en masse!!!??!? ARGH§!one

underligt even

nu har jeg ændret mine filer til utf-8, jeg bruger:

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

min database er ændret alle steder til utf8_unicode

når jeg skriver æ,ø og å i min tekster på siden, virker det fint, men når jeg hiver data ud fra min db kommer der firkanter.

hvis jeg bruger:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

virker det godt nok, med data fra db'en, men ikke teksterne på siden...

tyder på at det er databasen der er et problem med?

selve databasen står til utf8_unicode, tabellen står til utf8_unicode og tekstfelterne i tabellen står til utf8_unicode.

er der andre steder det skal rettes?
Avatar billede majbom Novice
08. august 2008 - 11:20 #16
kan det passe at jeg er nødt til at køre data fra databasen igennem en utf8_encode før det virker? så er der jo ikke meget ide i at databasen er utf8, hvis det alligevel skal ændres...
Avatar billede majbom Novice
08. august 2008 - 11:29 #17
nå, jeg har fundet fejlen. det var de gåseøjne der ikke var rigtige gåseøjne, de var kursive i forhold til alm. ved ikke hvad der er gået galt. så det er nok bare den valgte skrifttype der ikke understøttede dette tegn. jeg har rettet de underlige tegn til "rigtige" gåseøjne og nu virker det.

bortset fra at der stadig er problemer med det utf8-halløj, så jeg tror bare jeg retter det tilbage til iso-8859-1 :)
Avatar billede majbom Novice
08. august 2008 - 13:00 #18
jeg har kørt:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci

på de tabeller der driller

og en:

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

på databasen

men stadig skal tekst der kommer fra databasen utf8-encodes... :s
Avatar billede erikjacobsen Ekspert
08. august 2008 - 13:02 #19
At ændre tegnsæt på databasen ændrer ikke indholdet. Er det puttet i som iso-8859-1 bliver det trukket ud sådan. Tegnsæt og lignende indstillinger har fx indflydelse på sorteringsrækkefølge ved udtræk fra databasen.
Avatar billede majbom Novice
08. august 2008 - 13:23 #20
jeg har prøvet at smide indhold i databasen via phpmyadmin efter jeg har ændret tegnsæt, og det er samme resultat.
Avatar billede erikjacobsen Ekspert
08. august 2008 - 17:09 #21
Det kommer så an på hvilket tegnset browseren har kørt, mens du har brugt phpmyadmin
Avatar billede majbom Novice
08. august 2008 - 19:28 #22
damn det er sq da noget roderi så...

tror bare jeg laver det hele tilbage til 8859-1 det virkede uden problemer (også med AJAX)
Avatar billede erikjacobsen Ekspert
08. august 2008 - 19:33 #23
Egentlig er fnuktionerne i Javascript, og dermed AJAX, ikke bygget til ISO-8859-1, men til UTF-8. Man kan sikkert sagtens få det til at virke med ISO-8859-1, men det er lidt som at rende rundt på sydpolen i utætte træsko.
Avatar billede majbom Novice
08. august 2008 - 19:37 #24
hmm, hvis jeg nu laver side encodet i utf8 som smider noget data i databasen, er det vel gemt som utf8 i databasen?
Avatar billede erikjacobsen Ekspert
08. august 2008 - 20:22 #25
Ja, man kan sagtens køre det hele igennem med UTF-8. Man skal bare gøre det hele vejen igennem.
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