Hallo,
in unser Programm ist eine Suche integriert. Diese Suche arbeitet mit einzelnen Seiten, welche über ein Menü mit der Seitennummer angesteuert werden, ähnlich der Suche über z.B. Google, also mit "2" bekommt man die Suchergebnisse 11-20 usw.
Die Codierung der URL, die für die Suchseiten benötigt wird, macht eine Routine, die aus den an die erste Suchseite übergebenen Parametern eine URL für die weiteren Seiten aufbaut:
Hiermit wird also eine URL erzeugt, die alle übergebenen Parameter an die Zielseite weitergibt.
Die URL für die zweite Seite der Suche nach "test" sieht also z.B. so aus:
Wir finden hier jedoch unerwarteterweise eine Problematik mit Umlauten. Soweit ich verstanden habe, müssen Umlaute einfach mittels
kodiert werden. Wir nutzen diese Funktion (wie oben gesehen), und so sieht für den Suchbegriff "Hängemappe" die URL für die zweite Seite so aus:
Codiert werden hier die 2 Zeichen, die in UTF8 ein "ä" ergeben. Tests mit einschlägigen Seiten, die URL-Codierung online anbieten, zeigen, dass die Decodierung der URL normal ein "ä" wiedergibt.
Rufen wir jetzt jedoch über den angegebenen Link die zweite Seite des Suchergebnisses auf, so beinhaltet die Variable (String), die den Suchbegriff mittels
übernimmt, nicht mehr "hängemappe", sondern "hängemappe".
Bei den beiden komischen Zeichen handelt es sich um die beiden Zeichen, die zusammen das "ä" in UTF8 ergeben.
Wir vermuten, dass es sich durch eine Konfigurationsänderung ergeben hat. Die Server, auf denen das Shopsystem läuft, sind kürzlich auf neue Server und eine neue Anbindung umgezogen, wobei die Konfiguration nicht 1 zu 1 übernommen wurde.
Was ich noch hinzufügen kann:
- Die Seite wurde mit UTF-8-Kodierung versehen:
- Die Erkennung des lokalen Browsers auf UTF-8 funktioniert.
Hat jemand irgendeine Idee, wie es zu dieser Konstellation kommen kann?
Danke.
in unser Programm ist eine Suche integriert. Diese Suche arbeitet mit einzelnen Seiten, welche über ein Menü mit der Seitennummer angesteuert werden, ähnlich der Suche über z.B. Google, also mit "2" bekommt man die Suchergebnisse 11-20 usw.
Die Codierung der URL, die für die Suchseiten benötigt wird, macht eine Routine, die aus den an die erste Suchseite übergebenen Parametern eine URL für die weiteren Seiten aufbaut:
Java:
String bar = translationResultPage+": ";
String parameterString = "";
java.util.Enumeration parameters = request.getParameterNames();
while(parameters.hasMoreElements())
{
String parameter = (String)parameters.nextElement();
boolean add = true;
for(int i=0;i<ignoreParameters.length && add;i++)
{
if(parameter.indexOf(ignoreParameters[i])>-1) {
add = false;
}
}
if(add)
{
String[] parametervalues = request.getParameterValues(parameter);
for(int i=0;i<parametervalues.length;i++)
{
parameterString += "&"+parameter+"="+java.net.URLEncoder.encode(parametervalues[i],"UTF-8");
}
}
}
Hiermit wird also eine URL erzeugt, die alle übergebenen Parameter an die Zielseite weitergibt.
Die URL für die zweite Seite der Suche nach "test" sieht also z.B. so aus:
Java:
... searchresult.jsp?position=10&x=24&searchstring=test&y=7
Wir finden hier jedoch unerwarteterweise eine Problematik mit Umlauten. Soweit ich verstanden habe, müssen Umlaute einfach mittels
Java:
URLEncoder.encode(String,String)
kodiert werden. Wir nutzen diese Funktion (wie oben gesehen), und so sieht für den Suchbegriff "Hängemappe" die URL für die zweite Seite so aus:
Java:
... searchresult.jsp?position=10&x=20&searchstring=h%C3%A4ngemappe&y=4
Codiert werden hier die 2 Zeichen, die in UTF8 ein "ä" ergeben. Tests mit einschlägigen Seiten, die URL-Codierung online anbieten, zeigen, dass die Decodierung der URL normal ein "ä" wiedergibt.
Rufen wir jetzt jedoch über den angegebenen Link die zweite Seite des Suchergebnisses auf, so beinhaltet die Variable (String), die den Suchbegriff mittels
Java:
searchstring = (String)request.getParameter("searchstring");
übernimmt, nicht mehr "hängemappe", sondern "hängemappe".
Bei den beiden komischen Zeichen handelt es sich um die beiden Zeichen, die zusammen das "ä" in UTF8 ergeben.
Wir vermuten, dass es sich durch eine Konfigurationsänderung ergeben hat. Die Server, auf denen das Shopsystem läuft, sind kürzlich auf neue Server und eine neue Anbindung umgezogen, wobei die Konfiguration nicht 1 zu 1 übernommen wurde.
Was ich noch hinzufügen kann:
- Die Seite wurde mit UTF-8-Kodierung versehen:
Java:
<%@ page pageEncoding="UTF-8" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- Die Erkennung des lokalen Browsers auf UTF-8 funktioniert.
Hat jemand irgendeine Idee, wie es zu dieser Konstellation kommen kann?
Danke.