Avatar billede mcole Nybegynder
24. juli 2007 - 12:17 Der er 12 kommentarer

encoding problem

Jeg danner en tabel fra java script:
document.write("<form name=\"xxx\" method=\"post\" action= ...
document.write("<input type=\"hidden\" name=\"remark\" value=\"æøå\" />"

Når jeg submitter formen bliver den encoded som UTF-8
siden har:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Hvordan får jeg POST'et den som iso-8859-1
Avatar billede Slettet bruger
24. juli 2007 - 12:23 #1
kan du egentlig overhovedet styre dette? Det er vist noget som er styret af browseren?

Men jeg er ikke sikker.
Avatar billede olebole Juniormester
24. juli 2007 - 13:36 #2
<ole>

Det lyder højst usandsynligt, din form bliver afsendt med et andet tegnsæt. Jeg kan ikke se, hvordan det skulle kunne lade sig gøre. Anyway, så bliver denne med garanti sendt som iso-8859-1:
    <form .... enctype="application/x-www-form-urlencoded; charset=iso-8859-1">

Jeg er ret overbevist om, dine problemer ligger andre steder, men prøv nu dette først - og kom så tilbage når/hvis det ikke hjælper  ;o)

/mvh
</bole>
Avatar billede mcole Nybegynder
24. juli 2007 - 13:55 #3
Det virker når jeg har formularen i <body>, men bliver tilsyneladende lavet om når jeg genererer formularen fra JavaScript.
Desværre olebole, det gør desværre ingen forskel.
Avatar billede olebole Juniormester
24. juli 2007 - 14:08 #4
Det har ikke noget med JavaScript at gøre, men det kan have med alt muligt andet at gøre:
* Hvilken encoding gemmer du filen med?
* Hvilket charset bruger din server som default?
* Hvilket charset bruger din database som default?
* Bruger du evt. script-libraries på serveren - og hvilket charset bruger de?
* Sætter du nogen HTTP-headers i din server-kode?

- og de allervigtigste spørgsmål:
* Hvorfra ved du, det ikke virker?
* Hvordan tester du?
Avatar billede mcole Nybegynder
24. juli 2007 - 15:02 #5
Hel olebole.
Jeg tester direkte fra en html side, altså ikke via nogen server.
Det er en post til SSL betalingsside. Jeg  har "target=" i min form for at åbne i et nyt vindue. Når jeg submitter formularen kodet i <body> ser jeg æøå rigtigt på betalingssiden.
Skaber jeg formularen med document.write fra Javascript, for at få indsat variable i formularen, fremstår æøå som UTF-8 vist med iso-8859-1.
Avatar billede olebole Juniormester
24. juli 2007 - 15:11 #6
For det første er det overvejende sandsynligt, at betalingssiden kører utf-8 - hvilket skaber rod, hvis du prøver noget andet.

Derudover mangler jeg svar på et par af spørgsmålene ovenfor:
* Hvilken encoding gemmer du filen med?
* Hvilket charset bruger din server som default?
Avatar billede olebole Juniormester
24. juli 2007 - 15:13 #7
- men hvorfor bruger du overhovedet document.write? Den er jo ulovlig (og burde resultere i en XML-fejl og et browsernedbrud) under XHTML
Avatar billede olebole Juniormester
24. juli 2007 - 15:16 #8
- og så bruger du i øvrigt JavaScript helt forkert. Du må ikke bruge æ, ø og å i strenge uden de er escaped. Prøv:
    document.write("<input type=\"hidden\" name=\"remark\" value=\"\u00E6\u00F8\u00E5\">")
Avatar billede mcole Nybegynder
24. juli 2007 - 15:20 #9
Hel olebole.
Mener du, at jeg i stedet skal skrive hele formularen i <body> og så indsætte værdier i de forskellige <input> felter fra JavaScript. De er i øvrigt alle "type=hidden".
Jeg har ikke mulighed for asp eller php i denne løsning.
Hilsen Ole
Avatar billede olebole Juniormester
24. juli 2007 - 15:31 #10
1) Virkede det, jeg skrev i (24/07-2007 15:16:29)
2) I JS-strenge skal du altid bruge unicodede special-tegn

Det er derfor ligegyldigt, om du henter værdierne i f.eks. et JS-array og indsætter dem i felterne med JS
Avatar billede olebole Juniormester
24. juli 2007 - 15:31 #11
- hvorfor skriver du dem i øvrigt ud med script. Hvorfor må de ikke bare stå i dokumentet fra start?
Avatar billede mcole Nybegynder
24. juli 2007 - 17:04 #12
Hej igen
Det du skrev 15:16:29 gør desværre ingen forskel.
Hvis jeg tester med Mozilla Firefox virker det i øvrigt uden escape.
Det er i IE-7 jeg har problemet, har jeg nu konstateret.
Ja, det ville være noget nemmere hvis de stod i dokumentet, det kræver blot at alle kunder hedder det samme og også køber det samme. Nej, spøg til side, værdierne kommer fra en cookie.
Jeg kan få fet til at virke, hvis jeg koder hele formen i dokumentet og så indsætter værdierne fra Javascript. Det er bare en lidt klodset måde, da jeg så får en masse ubenyttede <input> felter. Men det går vel alligevel, da brugerne ikke ser formularen da alle felter er hidden. Formularen er blot måden man overfører oplysninger til betalingssystemet som faktisk  er DIBS.
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