Avatar billede n-emy Nybegynder
11. juni 2009 - 21:31 Der er 5 kommentarer og
1 løsning

Charset-problem med POSTRequest

Hejsa eksperter

Jeg er ved at lege med noget POSTRequest på en form, men jeg har et charset-problem der er ved at drive mig til vanvid. Min server, database og side er sat til iso-8859-1. Min header ser således ud:

header('Content-Type: text/html; charset=iso-8859-1');

Mit javascript ser således ud:

<script type="text/javascript" language="javascript">
  var http_request = false;
  function makePOSTRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {

            http_request.overrideMimeType('text/html');
        }
      } else if (window.ActiveXObject) {
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
              http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
      }
      if (!http_request) {
        alert('Der opstod et problem.');
        return false;
      }

      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
  }

  function alertContents() {
      if (http_request.readyState == 4) {
        if (http_request.status == 200) {

            result = http_request.responseText;
            document.getElementById('myspan').innerHTML = result;           
        } else {
            alert('Kunne ikke finde postfilen.');
        }
      }
  }
 
  function get(obj) {
      var poststr = "mytextarea1="+encodeURI(document.getElementById("mytextarea1").value)+"&typeid="+encodeURI(document.getElementById("typeid").value);
      makePOSTRequest('postcomment.php', poststr);
  }
</script>

postcomment.php ser sådan ud:
<?
header('Content-Type: text/html; charset=iso-8859-1');

if($_POST[mytextarea1] <> NULL) {

print"Påsted - $_POST[mytextarea1]";
} else {
}


?>

Problemet er, at æøå osv. ikke vises korrekt i min $_POST som det ser ud nu. Jeg er kommet frem til at javascript delen må være i utf-8, for ændrer jeg headeren i postcomment.php til utf-8 vises tegnene korrekt i min $_POST, men Påsted vises så forkert. Hvis jeg så lader den være utf-8 og bare poster det i databasen vises det forkert når jeg trækker det ud af databasen fordi databasen også er iso. Jeg kan bare ikke sætte fingeren på hvor i javascriptet at fejlen er. Er der en venlig sjæl der kan hjælpe? =)
Avatar billede n-emy Nybegynder
11. juni 2009 - 22:58 #1
Nu har jeg fået det til at virke med noget php-indblanding (utf8_decode), og det virker, så det må være inputtet der er i UTF. Jeg foretrækker dog at charset er det samme i alle scripts på alle siderne, så hvis der er en der kan løse "gåden" ville jeg blive meget taknemmelig =)
Avatar billede thesurfer Nybegynder
12. juni 2009 - 05:07 #2
Du skal huske på, at filerne OGSÅ skal være i det angivet format! :)

Dvs, hvis du påstår at indholdet af filen "test.php" er i UTF-8 format, skal du også gemme (save) filen i UTF-8 format.

Check lige din editor..

Jeg ved at man f.eks. i UltraEdit ( http://www.ultraedit.com/ ) kan få lov til at bestemme formatet, hvilket er vigtigt.
Avatar billede majbom Novice
12. juni 2009 - 07:28 #3
ajax og iso-8859-1 er to ting der ikke passer sammen - iso-8859-1 er simpelthen ikke med.

så medmindre du vil lave dine filer om til utf8, er utf8_decode the way to do it
Avatar billede n-emy Nybegynder
15. juni 2009 - 16:34 #4
Mine filer er også gemt i iso, så hvis det er fordi Ajax ikke kan arbejde sammen med iso er det der mit problem ligger, så indtil jeg får konverteret til utf-8 må jeg jo bruge decode =) Svar splazz og surfer? =)
Avatar billede majbom Novice
15. juni 2009 - 20:25 #5
kommer her
Avatar billede majbom Novice
17. juni 2009 - 19:25 #6
tak for point, selvom det nok lige var i overkanten :)
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