Questions & Answers

khounlivong
Occasional Observer

URIEncoding und <jsp:include

Auf die Gefahr hin, mich als Deppen zu outen:

wir erhalten bei per <jsp:include eingebundene Snippets doppelt UTF-8 encodierte Links.

Auf unseren Frontend-Servern landet de Content per Verรถffentlichungs-Servlet, das file.Encoding ist รผberall utf-8. Auf den Frontend lรคuft Tomcat. URIEncoding in server.xml ist ebenfalls auf utf-8 gesetzt.

Im Preview (Jetty, Firstspirit) wird alles normal angezeigt, auf den Tomcat auf der Haupteite alles okay, dort wo die <jsp:include einsetzen doppeltes UTF-8-Encoding.

Meine Vermutung ist,

Irgendeinne Idee?

0 Kudos
6 Replies
broszeit
I'm new here

Hallo,

die generierten Seiten enthalten noch korrekt codierte Links?

Das Deployment in FirstSpirit ist erst einmal unabhรคngig davon, welcher jsp Code geschrieben wird und sollte deshalb noch korrekt funktionieren.

Ich kรถnnte mir deshalb als mรถgliche Fehlerquellen die Konfiguration des Tomcats oder ein fehlerhaftes jsp Dokument vorstellen.

Viele GrรผรŸe

Rouven

Nah, die Sache wird noch komplizierter.

Neben der รœbertragung per doStore(), die man durchaus mit request.setCharacterEncoding() beeinflussen kann und den zusรคtzlichen <init-param> in der web.xml mit formEncoding haben wir festgestellt, daรŸ man dem JDBC-Connector/J fรผr MySQL 5.x auch noch einen

&useUnicode=true&characterEncoding=UTF8

mitgeben kann. Die alles entscheidende Frage nun - muรŸ ich bei Umstellung die gesamte DB neu importieren/exportieren oder bleiben die Daten valide?

0 Kudos

Wenn du auf der sicheren Seite sein willst, wirst du die Daten importieren/exportieren, ggf. sogar konvertieren mรผssen. Kommt darauf an, was fรผr ein Encoding die Datenbank vorher hatte und welche Zeichen in den bisherigen Daten vorhanden sind.

Ein paar Links, die vielleicht helfen:

Ich glaube es lรคuft in erster Linie auf die richtige Nutzung des FSIntegration-Modules (DynamicDatabaseAccess), deren Implementierung in den Templates hinaus. Habt ihr da Erfahrung?

Die Umstellung des Datenbankzugriffs ergab รผble Exceptions:

de.espirit.or.ORException: java.sql.SQLException: Incorrect string value: '\xC2\x84\xC3\x83\xC2\x96...' for column 'sn0' at row 1 / SQL = INSERT INTO fs_ds.users (sector, position_, mail, sn0, facsimiletelephonenumber, department, isregion, street, housenumber, companyname, iscompany, country, city, fs_gid, mobiletelephonenumber, username, title, academictitle, isinactive, readablepwd, cn0, telephonenumber, zipcode, salutation0, parent_id,
fs_id, fs_valid_from, fs_valid_to, fs_release_to)VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?) / null / [sector (12): IT-Unternehmen=>;IT-Unternehmen, position_ (12): , mail (12): khamsonh.marcel@khounlivong.de, sn0
(12): รƒโ€žรƒโ€“รƒล“ Khounlivong, facsimiletelephonenumber (12): , department (12): IT, isregion (16): false, street (12): Dittrichring, housenumber (12): 17, companyname (12): PIN Khounlivong, iscompany (16): false, country (12): , city (12): Leipzig, fs_gid (-2): 979b3dc5-5145-4ed6-b196-8ace2d0a7a98,
mobiletelephonenumber (12): +49 (0)177-59039-50, username (12): khamsonh.marcel@khounlivong.de, title (12): , academictitle (12):
Dipl.-Ing., isinactive (16): true, readablepwd (12): not-generated-yet, cn0 (12): Khamsonh รƒยครƒยถรƒยผรƒลธ, telephonenumber (12): +49 (0)341-98989-15, zipcode (12): 04109, salutation0 (12): Herr, parent_id (-5): 1735, fs_id (4): 43328, fs_valid_from (-5): 1368413455001, fs_valid_to (-5):  223372036854775807, fs_release_to (-5): 0]
Nested message: Incorrect string value: '\xC2\x84\xC3\x83\xC2\x96...' for column 'sn0' at row 1
de.espirit.or.impl.AbstractUpdateStatement.execute(AbstractUpdateStatement.java:171)
de.espirit.or.impl.AbstractUpdateStatement.executeUpdate(AbstractUpdateStatement.java:74)
de.espirit.or.impl.TemporalCommandHandler.handle(TemporalCommandHandler.java:77)
de.espirit.or.impl.CreateCommand.accept(CreateCommand.java:49)
de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:655)
de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:77)
de.espirit.or.impl.SessionImpl.doCommit(SessionImpl.java:195)
de.espirit.or.impl.AbstractSession.commit(AbstractSession.java:568)
de.espirit.or.impl.AbstractSession.commit(AbstractSession.java:554)
de.espirit.firstspirit.opt.integration.web.StoreServlet.doStore(StoreServlet.java:259)
de.espirit.firstspirit.opt.integration.web.StoreServlet.doPost(StoreServlet.java:140)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
de.espirit.firstspirit.acl.servlet.MultiAccessControlFilter.doFilter(MultiAccessControlFilter.java:110)

root cause

java.sql.SQLException: Incorrect string value: '\xC2\x84\xC3\x83\xC2\x96...' for column 'sn0' at row 1
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
de.espirit.or.impl.AbstractUpdateStatement.execute(AbstractUpdateStatement.java:169)
de.espirit.or.impl.AbstractUpdateStatement.executeUpdate(AbstractUpdateStatement.java:74)
de.espirit.or.impl.TemporalCommandHandler.handle(TemporalCommandHandler.java:77)
de.espirit.or.impl.CreateCommand.accept(CreateCommand.java:49)
de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:655)
de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:77)
de.espirit.or.impl.SessionImpl.doCommit(SessionImpl.java:195)
de.espirit.or.impl.AbstractSession.commit(AbstractSession.java:568)
de.espirit.or.impl.AbstractSession.commit(AbstractSession.java:554)
de.espirit.firstspirit.opt.integration.web.StoreServlet.doStore(StoreServlet.java:259)
de.espirit.firstspirit.opt.integration.web.StoreServlet.doPost(StoreServlet.java:140)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
de.espirit.firstspirit.acl.servlet.MultiAccessControlFilter.doFilter(MultiAccessControlFilter.java:110)

Wie mรผssen unsere Entwickler die Formulare gestalten?

0 Kudos

Klingt fรผr mich ja eher nach einem Problem wie hier oder hier.

0 Kudos

Hallo,

da ich annehme, dass Rouvens und Christophs Antworten weitergeholfen haben, markiere ich diesen Thread als beantwortet.

Sollten weitere Fragen bestehen, bitte ein neues Posting erรถffnen.

Viele GrรผรŸe

Michaela

0 Kudos

Type a product name