[php/ajax]franse tekens vervormd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bibawa
  • Registratie: Augustus 2005
  • Laatst online: 13-04-2008
Ik maak gebruik van ajax om bepaald egegevens te versturen naar mijn database.

Het probleem is wanneer de gebruiker tekens als é ç ô etc.. invoert dat deze tekens echt worden vervormd in de database tot Café (dit is bv café als invoer).

In eerste instantie dacht ik dat addslashes() hiervoor verantwoordellijk was maar dat bleek niet het geval te zijn (heb het in een apart bestand getest en deze functie blijft van die karakters af.

Ik beschuldig nu momenteel m'n ajax functie zelf die alles via j avascript verstuurd.

Ik dacht dat het aan de EncodeURI() lag :

JavaScript:
1
2
var poststr = "naam=" + encodeURI( document.fuif.txtNaam.value)+
              "&datumvan="+encodeURI(document.fuif.txtDatumVan.value)+


maar nadat ik deze verwijderd had bleef ook alsnog het probleem bestaan.

Nu zie ik ook nog in die zelfde functie hetvolgende staan:

JavaScript:
1
2
3
4
5
6
  http_request.onreadystatechange = alertContents;
              http_request.open('POST', url, true);
              http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
              http_request.setRequestHeader("Content-length", parameters.length);
              http_request.setRequestHeader("Connection", "close");
              http_request.send(parameters);



Omdat dit een copy & paste functie is van iemand weet ik ook niet doorwat ik het moet vervangen maar als laatste denk ik nu dat de "setRequestHeader" verantwoordellijk is voor het probleem, en dat deze het een en ander aanpast naar zijn zin.

Zou dit het probleem kunnen zijn en doorwat kan ik het veranderen?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Welke charsets gebruik je? Ik gok dat je database iso8859-1(5) gebruikt terwijl je pagina's UTF-8 zijn ofzo ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Het probleem is dat je een UTF-8 encoded string binnen krijgt, maar dat je bijvoorbeeld in een ISO-8859-1 of Latin1 encoded kolom opslaat. de beste oplossing hiervoor is overal dezelfde encoding gebruiken.

Acties:
  • 0 Henk 'm!

Verwijderd

Je voert het in als UTF-8 en slaat het in de database op als ISO-8859-1, dat is waarschijnlijk je probleem.

Heeft verder weinig met javascript ed te maken.
Die encodeURI kun je maar beter wel laten staan, anders gaan er rare dingen gebeuren mocht iemand een & invoeren bijvoorbeeld.

Let ook op dat encodeURI niet onder oudere browsers beschikbaar is, ook wil je daar waarschijnlijk niet encodeURI voor gebruiken maar encodeURIComponent, aangezien het anders alsnog mis kan gaan (plussen die worden omgezet naar spaties bijvoorbeeld).

Acties:
  • 0 Henk 'm!

  • bibawa
  • Registratie: Augustus 2005
  • Laatst online: 13-04-2008
Moet ik dit in de database instellen als utf8_general_ci of een andere? of maakt het helemaal niet uit wat ik neem

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
bibawa schreef op zondag 30 september 2007 @ 11:11:
Moet ik dit in de database instellen als utf8_general_ci of een andere? of maakt het helemaal niet uit wat ik neem
Waarom zoek je dat niet gewoon even op dan? >> http://dev.mysql.com/tech...articles/4.1/unicode.html
En anders heb je hier een compleet hoofdstuk uit de manuals dat eraan gewijd is.

Ik moet zeggen dat ik je passieve houding aardig beu begin te worden.

[ Voor 21% gewijzigd door RobIII op 30-09-2007 14:22 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • bibawa
  • Registratie: Augustus 2005
  • Laatst online: 13-04-2008
Die pagina heb ik als eerste doorgenomen toen me me dit hier zei ;)

ondertussen heb ik de encoding van de tabel veranderd naar utf8_general_ci.

Nadat ik dit veranderde bleef het probleem bestaan, toen heb ik wat verder in mijn code zitten rondduinen en heb ik ook de <meta tag verwijderd uit het <head></head> gedeelte:

dit omdat ik ook dacht hiermee aan te geven welke encoding de website gebruikt:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Maar het probleem blijft jammer genoeg bestaan, wanneer ik rechtstreeks een insert doe op de database met café woorden dan gaat het wel juist.

---
@GoT Modjes: Het zou echt maar dan ook echt h andig zijn als jullie algemene afspraken hadden voor het HELE forum en niet voor elk subonderdeel, ik vind dit zelf zeer vervelend momenteel..

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
bibawa schreef op zondag 30 september 2007 @ 16:11:
@GoT Modjes: Het zou echt maar dan ook echt h andig zijn als jullie algemene afspraken hadden voor het HELE forum en niet voor elk subonderdeel, ik vind dit zelf zeer vervelend momenteel..
Die zijn er: Het algemeen beleid

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Ik weet verder niks van Ajax, maar probeer het eens met http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8")

Dan weet de server ook hoe die de characters moet interpreteren, anders wordt het meestal simpelweg als us-ascii geïnterpreteerd of evt iso-8859-1
Pagina: 1