[Zend] Zend Form html specialchars

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • t1mmy
  • Registratie: Mei 2006
  • Laatst online: 14-08 16:39
Ik ben bezig met een form op te zetten die mijn data (suprise!) naar een database stuurt alleen gaat dit niet helemaal goed met special characters.
Op het moment dat mijn formData uitprint worden tekens zoals ë en ü weer gegeven als rare tekens (En werkt dit dus ook niet goed)

Een voorbeeld:
PHP:
1
2
3
4
5
6
$title = new Zend_Form_Element_Text('titleInput');
$title->setLabel('Titel:')
   ->setRequired(true)
    ->addFilter('StringTrim')
   ->addFilter('StripTags')
   ->addValidator('NotEmpty');

Dan voer ik deze tekst in:
code:
1
dssad ü ë

Als ik op het moment van de submit de formData uitprint komt dit er uit:
code:
1
2
dssad ë ü
// ¼ = 1/4 teken


Weet iemand waar dit fout gaat? Hebben jullie meer informatie nodig om me te helpen met dit probleem?

Oh en trouwens, de charset staat goed, in een text area met een CKEditor er in werkt wel goed

[ Voor 6% gewijzigd door t1mmy op 28-10-2011 09:40 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
Wat is de encoding van je HTML (als in: HTTP headers, meta tag)? Wat is de encoding van je Database? Op welke encoding stel je je connectie in? Misschien gebruitk Zend nog wel ergens iets van een instelling voor Encoding oid (ben ik niet bekend mee)? Etc. etc. Dit komt écht vaak zat voor en is genoeg over te vinden ;)
t1mmy schreef op vrijdag 28 oktober 2011 @ 09:33:
Oh en trouwens, de charset staat goed, in een text area met een CKEditor er in werkt wel goed
Stiekem editten :P Anyway: wat is "staat goed"? Alle andere plekken ook nagelopen die ik noemde?

[ Voor 75% gewijzigd door RobIII op 28-10-2011 09:47 ]

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!

  • t1mmy
  • Registratie: Mei 2006
  • Laatst online: 14-08 16:39
Dat alles staat dus goed. Het gaat daadwerkelijk in het form fout. Als ik via PMA een tekst met spechars in de DB zet gaat het goed en ze via het content veld (met CKEditor) invoer gaat het ook goed. (Ook bij het uitprinten op het scherm) Het lijkt echt op een issue met het zend text field

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En iets als dit of dit helpt niet?

[ Voor 26% gewijzigd door RobIII op 28-10-2011 09:50 ]

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!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
t1mmy schreef op vrijdag 28 oktober 2011 @ 09:47:
Het gaat daadwerkelijk in het form fout. Als ik via PMA een tekst met spechars in de DB zet gaat het goed en ze via het content veld (met CKEditor) invoer gaat het ook goed.
Ja, maar dát is dus onzin. Als je PMA vertelt dat 'ie je karakters als UTF-8 moet opslaan, en je zegt tegen je browser dat het latin-1 is, dan gaat het alsnog fout. Of als je aan mysql vertelt dat 'ie moet doen alsof het latin-1 is.

Je moet bij dit soort dingen altijd even een stapje terug doen: je stuurt geen tekens door, maar bytes. Een database slaat ook bytes op, maar heeft de encoding nodig om sorteren goed uit te voeren. PHP hoeft de encoding alleen te weten om de lengte van een string (=aantal tekens, niet aantal bytes) correct te bepalen. Daarna moet je de browser wél vertellen wat die bytes betekenen, want die moet er immers weer tekens van maken.

Er gaat nu ergens iets fout: je tekens worden opgeslagen als utf-8, maar worden weergegeven als latin-1. Je zult gewoon stap-voor-stap moeten kijken welke bytes worden doorgestuurd, en welke betekenis er aan wordt gekoppeld.

Let wel: ü (als UTF-8) is hetzelfde als ë (in latin-1).

oh, en het zijn geen specialchars, het zijn tekens die in utf-8 en latin-1 representatie niet hetzelfde zijn, en dat zijn alle niet-7 bit-ASCII-karakters

[ Voor 6% gewijzigd door ValHallASW op 28-10-2011 19:43 ]