[mapserver-users] Encoding issues

Tamas Szekeres szekerest at gmail.com
Fri Feb 6 18:58:46 EST 2009


You might have to make explicit conversion maually something like:

            string value = "لققافعععىىةةونه"; //I actually get this (in
arabic) through user input
            byte[] bytes = Encoding.Convert(Encoding.Unicode,
Encoding.GetEncoding(1256), Encoding.Unicode.GetBytes(value));
            StringBuilder s = new StringBuilder();
            for (int i = 0; i < bytes.Length; i++)
                s.Append(Convert.ToChar(bytes[i]));
            shpObj.text = s.ToString();

Best regards,

Tamas



2009/2/6 Murty Maganti <MMaganti at oriongis.com>

>  HI
>
>
>
> I am doing a simple thing. I have a map file and trying to show some static
> text in Arabic on map. You can try this with any map file as it is nothing
> to do with layers from map.
>
>
>
> At run time (like on a button click), please add this
>
>
>
>                 layerObj lyr = new layerObj(mapObj);
>
>                 lyr.name = "TextAcetate";
>
>                 lyr.status = mapscript.MS_ON;
>
>                 lyr.type = MS_LAYER_TYPE.MS_LAYER_ANNOTATION;
>
>                 lyr.labelcache = mapscript.MS_TRUE;
>
>
>
>                 double locationX = 50;
>
>                 double locationY = 50;
>
>
>
> lyr.transform = (int)mapscript.MS_FALSE;
>
>
>
> classObj layerClass = new classObj(lyr);
>
>
>
> //All label properties
>
> layerClass.label.size = 15;
>
> layerClass.label.type = MS_FONT_TYPE.MS_TRUETYPE;
>
>>
>>
> layerClass.label.encoding = "CP1256";
>
>
>
>
>
>                 shapeObj shpObj = new shapeObj((int)MS_SHAPE_TYPE
> .MS_SHAPE_POINT);
>
>                 lineObj lnObj = new lineObj();
>
>
>
>                 pointObj pt = new pointObj(locationX, locationY, 0, 0);
>
>                 lnObj.add(pt);
>
>
>
>                 shpObj.add(lnObj);
>
>
>
>                 shpObj.text = "لققافعععىىةةونه"; //I actually get this (in
> arabic) through user input
>
>
>
>                 lyr.addFeature(shpObj);
>
>
>
> mapObj.draw(); //Onto a picture box or save as file
>
>
>
> (In the map file, my output format is set to GD/PNG)
>
>
>
> Please let me know if you need more information.
>
>
>
> Thanks
>
> Murty
>
>
>
>
>
> *From:* mapserver-users-bounces at lists.osgeo.org [mailto:
> mapserver-users-bounces at lists.osgeo.org] *On Behalf Of *Tamas Szekeres
> *Sent:* Friday, February 06, 2009 4:12 PM
>
> *To:* Murty Maganti
> *Cc:* mapserver-users at lists.osgeo.org
> *Subject:* Re: [mapserver-users] Encoding issues
>
>
>
> Please send me your example so that I could examine what's going on.
>
> Best regards,
>
> Tamas
>
>
>  2009/2/6 Murty Maganti <MMaganti at oriongis.com>
>
> Hi
>
>
>
> I tried with the suggested encoding but still no success.
>
> From the output below, I guess ICONV support is included.
>
>
>
> E:\Utils\MapServer\Map Server 5.2 RC\ms4w\Apache\cgi-bin>mapserv -v
>
> MapServer version 5.2.0 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP
> OUTPUT=PDF
>
>  OUTPUT=SWF OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE *
> SUPPORTS=ICO*
>
> *NV* SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT
> SUPPORTS=WFS_SERVER
>
> SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER
> SUPPORTS=FASTCGI SUP
>
> PORTS=THREADS SUPPORTS=GEOS SUPPORTS=RGBA_PNG INPUT=JPEG INPUT=POSTGIS
> INPUT=OGR
>
>  INPUT=GDAL INPUT=SHAPEFILE
>
>
>
> Where can get some details on how to build the C# mapscript (Managed
> assembly only) from Visual Studio, keeping all unmanaged dlls from binaries
> from ms4w. I just want to give a try using MarshalAsAttribute.
>
>
>
> Thanks
>
> Murty
>
> *From:* Tamas Szekeres [mailto:szekerest at gmail.com]
> *Sent:* Friday, February 06, 2009 3:02 PM
> *To:* Murty Maganti
> *Cc:* mapserver-users at lists.osgeo.org
> *Subject:* Re: [mapserver-users] Encoding issues
>
>
>
> Hi,
>
> You might want to try with encoding="ISO-8859-6" assuming you have libiconv
> compiled in.
> The c# mapscript doesn't specify explicit conversion during the marshaling.
> In this case I assume an unicode to Charset.Ansi conversion will
> automatically takes place by default.
>
> Best regards,
>
> Tamas
>
>
>
>  2009/2/6 Murty Maganti <MMaganti at oriongis.com>
>
> Hello
>
>
>
> I am having some issues using Arabic text as labels. I am using C# map
> script. I am setting the following at runtime
>
>
>
> labelObj label = classObj.label;
>
> label.encoding = "CP1256";
>
> label.text = "some text in Arabic"; (At rune time in VS, I can see the text
> is actually in Arabic)
>
>
>
> But labels are displayed as '?????'.
>
>
>
>  Is there any conversion I need to do before setting the text value. How
> are the string represented in the underlying mapscript dll (ASCII or
> Unicode?). As I was reading in the MSDN, the default marshalling uses LPStr
> which is a single byte of ASCII. Does it mean that first I need to convert
> from Unicode to ASCII in C# before setting the value.
>
>
>
> Appreciate any help.
>
>
>
> Thanks
>
> Murty
>
>
>
>
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20090207/5a550147/attachment.html


More information about the mapserver-users mailing list