Hello
Great. It worked. Thanks a lot for your quick help. Thanks Murty From: Tamas Szekeres [mailto:[email protected]] Sent: Friday, February 06, 2009 6:59 PM To: Murty Maganti Cc: [email protected] Subject: Re: [mapserver-users] Encoding issues 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 <[email protected]> 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: [email protected] [mailto:[email protected]] On Behalf Of Tamas Szekeres Sent: Friday, February 06, 2009 4:12 PM To: Murty Maganti Cc: [email protected] 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 <[email protected]> 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:[email protected]] Sent: Friday, February 06, 2009 3:02 PM To: Murty Maganti Cc: [email protected] 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 <[email protected]> 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 [email protected] http://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________ mapserver-users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/mapserver-users
