On Wed, 2006-13-09 at 12:05 +0200, Andreas Pakulat wrote:
> Hi,
>
> I've got a pretty weird problem here with geotools 2.1.0 and a wfs.
>
> I'm trying to execute a wfs query from a java servlet, the servlet get's
> a string via AJAX that is used in the query. The problem is that this
> string is encoded in 3 different encodings on 3 different systems:
>
> System A: Linux/tomcat runs in UTF-8 locale, Java String is encoded in UTF-8
> System B: Windows XP, Java String is encoded in UTF-8
> System C: Linux/tomcat runs in [EMAIL PROTECTED] everything else is
> POSIX, the Java String seems to be encoded in UTF-8 twice, i.e. I get 4
> bytes for every non-ascii character.
>
> The real problem is, that I can't use SystemA and SystemC to query a
> geoserver wfs, they won't find any feature with non-ascii name. It works
> on System B out of the box, though. The geoserver always runs on the
> same machine in a different tomcat, the postgis database uses LATIN1
> encoding and querying the geoserver from php using mapbender is no problem.
That's a strange one. It almost sounds like GeoServer isn't decoding the
strings from the request properly. But it is, in the case of System B.
Are you able to play around with any of the settings in GeoServer's
container? Perhaps try a different container? (Jetty or Resin for
example)
Definitely a tough problem, and I'm afraid I don't have any ideas.
Richard
>
> I tried first with a simple decode from UTF-8 like this:
>
> decodedParam = Charset.forName("utf-8").decode(input.getBytes()).toString();
>
> Doing this results in the following string on the 3 systems:
>
> System A: No change at all, decodedParam == input, i.e. UTF-8 encoded
> System B: decodedParam is now encoded in latin1, it can be read in a
> debugger as is (i.e. I see german umlauts as usual)
> System C: decodedParam is now a latin1 string with 2 question marks at
> the place where I had 4 bytes before.
>
> Putting this string into a LikeFilter results in
>
> System A: No return values
> System B: An encoding exception because geotools sends an xml request to
> geoserver with declared encoding UTF-8 but used encoding for this string
> is latin1
> System C: Everything that has 2 characters at the place where a german
> umlaut was given in the form (i.e. for Lün it would return features with
> the names Linne, Leon...)
>
> I always thought Java strings would be using Unicode codepoints instead
> of bytes, but it seems I was wrong.
>
> I'm running out of options here, so if anybody could shed some light
> onto this, please?
>
> Andreas
>
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users