[gdal-dev] Re: WFS and -where with non-ASCII characters

Rahkonen Jukka Jukka.Rahkonen at mmmtike.fi
Tue Jan 3 09:37:24 EST 2012


 
Mateusz Łoskot wrote:

> Jukka Rahkonen wrote:
> > I took the successful query sent by Ari from the TinyOWS 
> log and copied it
> > literally into Windows and this way it works:
> >
> > -where name='Hämeenkylä'
> 
> Windows Command Prompt can work with UTF-8 characters if you change
> codepage to UTF-8:
> 
> 0) Open new prompt (cmd.exe)
> 1) Change font to Lucida Concole
> 3) chcp 65001
> 
> And OGR can consume filter without problems:
> 
> -where "name=\"Hämeenkylä\""
> 
> Note, the \"\" is needed to not to confuse OGR SQL compilers,
> otherwise value Hämeenkylä
> will be parsed as OGR SQL type SNT_COLUMN instead of SNT_CONSTANT for
> field value.
> 
> However, I think the problem may be with TinyOWS. It throws error;
> 
> <ows:ExceptionText>QUERY_STRING contains forbidden
> characters</ows:ExceptionText>
> 
> which is generated by TinyOWS:
> 
> http://www.tinyows.org/trac/browser/trunk/src/struct/cgi_reque
> st.c?rev=525#L208
> 
> where TinyOWS simply tests characters passed in request against fixed
> range: A-Za-zà-ÿ
> Comparing extended ASII codes, the value 'ä' is outside of 
> this range anyway.
> 
> I get no WFS exception no OGR error when querying with some (not all)
> Polish diacritics:
> 
> ogrinfo WFS:http://hip.latuviitta.org/cgi-bin/tinyows
> lv:pks_tilastoalue_piste -where "name=\"ąęśćł\""
> 
> Certainly, it gives empty resultset.
> 
> I think it would be a good idea to try against different WFS server.

I followed your example but changing the font and chcp 65001 did not 
actually change anything as fas as I can see. OGR may consume
-where "name=\"Hämeenkylä\"" OK but as you said but TinyOWS denies it.
However,  -where name='Hämeenkylä' gives correct result. But 
it gave correct result even before changing the font and codepage. 

TinyOWS log shows your -where "name=\"ąęśćł\"" like "aescl" but I am not
sure if the characters have changed or if my console just shows them 
as ascii characters.

Mapserver behaves also as it did before. My codepage is now 65001 and 
-where "name=\"Hämeenkylä\"" gives http 500 error while 
-where name='Hämeenkylä' gives correct result.

-Jukka Rahkonen-





More information about the gdal-dev mailing list