Avatar billede majbom Novice
06. maj 2008 - 16:21 Der er 17 kommentarer og
1 løsning

problemer med danske tegn i ajax-script

hej experter

til en forandring er jeg ved at få grå hår :S

jeg sidder med noget javascript/ajax/php/html som bare ikke vil som jeg vil.

problemer er at når jeg sender æøåé osv vha ajax til en php-side, kommer der mærkelige tegn, selvom jeg alle steder har sat charset til iso-8859-1.
jeg har så prøvet at sætte charset til utf-8 (hvilket jeg ikke regnede med gjorde det bedre) og så virker det sq!

det er jo egentlig godt nok, men når jeg så henter data fra en php-fil vha ajax, så er der problemer :S

så det er lidt ligesom at vælge mellem pest eller kolera...

hvad gør jeg lige for at få afhjælpet dette "lille" problem?

jeg har søgt og søgt, men synes ikke at kunne finde andet end en løsning der kun virker "den ene vej"...

pft
Avatar billede w13 Novice
06. maj 2008 - 18:02 #1
Så du bruger iso-8859-1 på alle dine andre sider?

Du kan sagtens bruge iso-8859-1, men det er ikke altid nok at sætte det i meta-tags.
Hvis du f.eks. åbner siderne i notesblok og vælger "Gem som" kan du  vælge "Encoding", som skal stå på "ANSI" hvis ISO og på "UTF" hvis UTF.

Der er for tiden rigtig mange, som har præcis det samme problem som du, og løsningen er altid den samme. :)
Avatar billede w13 Novice
06. maj 2008 - 18:04 #2
Hvis du henter fra en database, skal dens tegnsæt(/charset) ligeledes stemme overens med sidernes.
Avatar billede majbom Novice
06. maj 2008 - 19:42 #3
hmm alle felterne i min database (som er tekst) var sat til latin1_swedish (?) jeg har ændret det til dansk, ved ikke om det gør en forskel, men nu prøver jeg lige.

mht filerne, jeg bruger editplus' indbyggede ftp, så jeg gemmer ikkemine filer på min maskine, andet end backup-funktionen der gør det for mig... så jeg vælger ikke tegnsæt når jeg gemmer, men hvis jeg har en fil åben og vælger gem som, står den automatisk til ANSI, så mon ikke det er det de er gemt som?
Avatar billede majbom Novice
06. maj 2008 - 19:53 #4
nu har jeg prøvet at gemme de 3 dokumenter på min computer encoded som ANSI og derefter uploade dem med filezilla, jeg har sat alle tekstfelter i min db til latin1_danish_ci og i alle 3 dokumenter står der ISO-8859-1...
Avatar billede olebole Juniormester
06. maj 2008 - 21:23 #5
<ole>

Der er adskillige (og der kommer flere og flere) JavaScript libraries, som ikke kan håndtere iso-8859-1. JavaScript overgik til utf-8 i version 1.4 - og det har naturligvis væsentlig betydning for Ajax, hvor variabler jo hele tiden encodes. Brug utf-8 i stedet  ;o)

/mvh
</bole>
Avatar billede majbom Novice
06. maj 2008 - 21:27 #6
hvis jeg bruger utf-8 overalt skulle det virke? hvad så når jeg har noget i min kode med æ f.eks.?

et eks.:

echo "<select name=\"my-select\"><option value=\"\">vælg type...</option></select>";

og overfører det fra min php-fil vha ajax, kommer der bare en firkant i stedet for et æ
Avatar billede w13 Novice
06. maj 2008 - 22:13 #7
Ikke hvis du bruger utf-8 til alt.
Avatar billede majbom Novice
07. maj 2008 - 08:13 #8
okay, jeg må prøve at rette det hele... (gab) :)
Avatar billede majbom Novice
08. maj 2008 - 12:44 #9
nå jeg har kogt det lidt ned inden jeg ændrer alle mine dokumenter osv.

nu har jeg en htm-fil og en php-fil, det hele er gemt som UTF og er sat til charset UTF-8 i selve dokumenterne, og det virker egentlig efter hensigten, med æøå osv.

det siden gør er at men skriver noget i et textarea, trykker på en knap som vha ajax smidder indholdet af textarea'et i en session-variabel, når jeg så reloader siden (manuelt) skal den skrive indholdet i en div. og det virker som sagt som det skal, men hvis jeg sætter tinymce på mit textarea virker det ikke...
Avatar billede w13 Novice
08. maj 2008 - 12:48 #10
Det lyder som om, tinymce'en har et andet tegnsæt så. :)
Avatar billede majbom Novice
08. maj 2008 - 13:07 #11
ja måske

jeg har fundet ud af at når jeg henter indholdet fra textarea med tinymce, "omdøber" den ø til &oslash; osv.
hvis jeg ikke bruger tinymce, skriver den bare "ø", så jeg skal vel på en måde have lavet &oslash; om til ø med mit javascript inden jeg sender det videre med ajax, men hvordan?
Avatar billede majbom Novice
08. maj 2008 - 13:16 #12
og der!

fandt ud af at slå funktionen fra, så nu bliver special-karakterer ikke lavet om til &; koder...
Avatar billede majbom Novice
08. maj 2008 - 13:29 #13
nu har jeg så bare et andet problem, jeg bruger systemet til at redigere i htm-filer og når jeg åbner dem er de i ISO-8859-1, men når de så bliver gemt bliver de ændret til UTF-8 - kan man ændre på det i php?
Avatar billede w13 Novice
08. maj 2008 - 13:59 #14
Prøv at køre det igennem php-funktionen: utf8_encode(teksten her)
Avatar billede majbom Novice
08. maj 2008 - 14:06 #15
nej det er ikke godt, så laver den æøå om til mærkelige tegn og filen er stadig encodet i UTF-8 (hvilket osse giver mening)
Avatar billede majbom Novice
08. maj 2008 - 14:10 #16
nå, mon ikke du mente decode? du plejer jo at vide hvad du snakker om :)

det virker i hvert fald med utf8_decode(tekst); :)
Avatar billede majbom Novice
08. maj 2008 - 15:22 #17
jamen det løste jo så alle mine problemer, smider du et svar w13?
Avatar billede w13 Novice
08. maj 2008 - 15:24 #18
Jo. Decode ;)
Og her er et svar.
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