From: Anton B. <ant...@ge...> - 2017-09-21 12:02:56
|
Hi list, I am running GeoServer 2.11.2 (platform independent binary on Windows 10, 64 bits), and GeoServer does not seem to be able to process an SLD which contains Hebrew characters correctly, when created throught the REST API. I created the SLD with the following POST request: POST http://daneel:8080/geoserver/rest/workspaces/cite/styles.sld HTTP/1.1 Accept: text/xml User-Agent: Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0 Content-Type: application/vnd.ogc.sld+xml; charset=utf-8 Host: daneel:8080 Cookie: JSESSIONID=fh4cjqmg7n3b3lnwnfpujbnb Content-Length: 1651 Expect: 100-continue BODY: <StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"> <NamedLayer> <Name>roads_hebrew</Name> <UserStyle> <Name>roads_hebrew</Name> <Title>roads hebrew</Title> <FeatureTypeStyle> <Rule> <Name>TypeRoad_1</Name> <Title>TypeRoad_1</Title> <PolygonSymbolizer> <Fill> <CssParameter name="fill-opacity">0</CssParameter> </Fill> </PolygonSymbolizer> </Rule> <Rule> <Name>דרך אזורית קיימת/מאושרת</Name> <Title>דרך אזורית קיימת/מאושרת</Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>TypeRoad_1</ogc:PropertyName> <ogc:Literal> <![CDATA[דרך אזורית קיימת/מאושרת]]> </ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#FF5500</CssParameter> <CssParameter name="stroke-width">1.2</CssParameter> <CssParameter name="stroke-linecap">round</CssParameter> </Stroke> </LineSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor> Inspecting the SLD we just uploaded through the REST API with the following request: GET http://daneel:8080/geoserver/rest/workspaces/cite/styles/roads_hebrew.sld HTTP/1.1 Host: daneel:8080 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8;charset=utf-8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Cookie: JSESSIONID=1d2nnunq6zl6c1kd6ytulxv6nt Authorization: Basic YWRtaW46Z2Vvc2VydmVy Connection: keep-alive Upgrade-Insecure-Requests: 1 RESPONSE BODY: <?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0"> <sld:NamedLayer> <sld:Name>roads_hebrew</sld:Name> <sld:UserStyle> <sld:Name>roads_hebrew</sld:Name> <sld:Title>roads hebrew</sld:Title> <sld:FeatureTypeStyle> <sld:Name>name</sld:Name> <sld:Rule> <sld:Name>TypeRoad_1</sld:Name> <sld:Title>TypeRoad_1</sld:Title> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill-opacity">0</sld:CssParameter> </sld:Fill> </sld:PolygonSymbolizer> </sld:Rule> <sld:Rule> <sld:Name>דרך ×�זורית קיימת/מ×�ושרת</sld:Name> <sld:Title>דרך ×�זורית קיימת/מ×�ושרת</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>TypeRoad_1</ogc:PropertyName> <ogc:Literal>דרך ×�זורית קיימת/מ×�ושרת</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:LineSymbolizer> <sld:Stroke> <sld:CssParameter name="stroke">#FF5500</sld:CssParameter> <sld:CssParameter name="stroke-linecap">round</sld:CssParameter> <sld:CssParameter name="stroke-width">1.2</sld:CssParameter> </sld:Stroke> </sld:LineSymbolizer> </sld:Rule> </sld:FeatureTypeStyle> </sld:UserStyle> </sld:NamedLayer> </sld:StyledLayerDescriptor> Also in the GeoServer web ui the SLD looks scrambled: https://i.imgur.com/IP5fbeP.png I tried to set the UTF-8 encoding for the java environment, by adding the JAVA OPTION Dfile.encoding to the start.bat startup script: "%RUN_JAVA%" %JAVA_OPTS% -Dfile.encoding=UTF-8 -DGEOSERVER_DATA_DIR="%GEOSERVER_DATA_DIR%" -Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar start.jar But this did not make any difference. Another thing I tried was setting a xml header (as suggested in this thread: http://osgeo-org.1560.x6.nabble.com/SLD-encoding-problem-td5046063.html) to the SLD that is being posted to GeoServer, that includes the character encoding, but did not solve the issue either. A colleague of mine tried the same on a Ubuntu machine, with the locale set to (as suggested in the earlier mentioned mail list thread), with similar results: LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC=fr_CH.UTF-8 LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= Can anyone shine light on what is happening here? Seems to me it is a bug in GeoServer, or are my colleague and me missing something in our GeoServer configuration? Btw, I opened up a probably related issue on the issue tracker earlier today: https://osgeo-org.atlassian.net/projects/GEOS/issues/GEOS-8295. Thanks and kind regards, Anton Bakker software developer@geocat <http://www.geocat.net/> tel. +31 318 416 664 |