Ik heb een beetje vreemd probleem, waar ik maar niet mijn vinger op kan leggen. Onze huidige (oude) server (Fedora, Tomcat 5, MySQL 4, Apache 2) doet het nog prima, maar is toe aan vervanging. Dus is er een nieuwe server ingericht (CentOS 6.3, Tomcat6, MySQL 5.1, Apache2).
Ik heb op deze nieuwe server een dump van de db geladen in MySQL, applicaties deployed in tomcat en alles werkt op zich weer prima, alleen een stukje sneller
. Echter zag ik na wat rondklikken in onze applicatie op de nieuwe server het bekende � tekentje verschijnen waar bijvoorbeeld een é had moeten staan? Op onze huidige server komt dit helemaal niet voor. Daar wordt é gewoon opgeslagen als hex c3 a9 (UTF-8) in de db.
Wanneer ik naar de response headers kijk, zie ik wel wat vreemds:
Oude server:
De applicaties zijn 100% identiek en dus ook de manier waarop de db connecties worden opgebouwd. De databases zelf zijn ook goed. Wanneer ik namelijk vanaf mijn dev-pc dezelfde applicatie naar de database op de nieuwe server laat verbinden, zie ik geen encoding problemen.
Ik zit me heftig af te vragen waar ik het nu moet zoeken om dit goed te krijgen?
Ik heb op deze nieuwe server een dump van de db geladen in MySQL, applicaties deployed in tomcat en alles werkt op zich weer prima, alleen een stukje sneller
Wanneer ik naar de response headers kijk, zie ik wel wat vreemds:
Oude server:
Nieuwe serverDate: Tue, 20 Nov 2012 11:28:00 GMT
Server: Apache/2.0.54 (Fedora)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1
200 OK
In alle pagina's is opgenomen dat de pagina's UTF-8 encoded moeten zijn:Date: Tue, 20 Nov 2012 11:26:26 GMT
Server: Apache/2.2.15 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
200 OK
Blijkbaar wordt op onze oude productieserver ergens van UTF-8 (database) de boel omgezet in ISO-8859-1 en dit is altijd blijven werken omdat de browser (ondanks de content-type in de HTML) het goed interpreteerde. (zie header). Vanuit de nieuwe omgeving wordt de tekst die blijkbaar ISO-8859-1 wordt omgezet wel als UTF-8 geinterpreteerd en gaat het dus fout.<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
De applicaties zijn 100% identiek en dus ook de manier waarop de db connecties worden opgebouwd. De databases zelf zijn ook goed. Wanneer ik namelijk vanaf mijn dev-pc dezelfde applicatie naar de database op de nieuwe server laat verbinden, zie ik geen encoding problemen.
Ik zit me heftig af te vragen waar ik het nu moet zoeken om dit goed te krijgen?
edit:
En ja, ik heb The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) al gelezen
En ja, ik heb The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) al gelezen
[ Voor 12% gewijzigd door Standeman op 20-11-2012 14:18 ]
The ships hung in the sky in much the same way that bricks don’t.