I hope people don't mind me posting as I learn things, hoping that it will spark some ideas from other people.

On Sun, 4 Jan 2009, Russell McOrmond wrote:

Howard Butler wrote on November 24, 2008 @ 05:17 PM:

pictures looked right. The problem might be as simple as the function msConvertWideStringToUTF8 being broken. Here's where MapServer tries to convert it: http://trac.osgeo.org/mapserver/browser/trunk/mapserver/mapsde.c#L750


The more I look at this, the more confused I get.

I'm now back at the customer (Xmas break), and confirmed that I'm not even making use of this code. The relevant strings are SE_STRING_TYPE and not SE_NSTRING_TYPE. I have also confirmed ( msDebug() statements) that the characters coming out of SE_stream_get_string() are Latin-1 encoded, and not UTF-8 encoded.

Our database person confirmed that the data is encoded as UTF-8 in the database. This suggests to me that it is SDE itself or the libsde.so client library that is doing the transcoding to Latin-1

I'm curious if anyone knows if libsde.so has an equivalent to Oracle's NLS_LANG environment variable?

It seems the decision to use STRING rather than NSTRING came down to the label functions. I haven't looked at those functions yet to determine if they need Latin-1, and thus this is why things are working with STRING (Which comes in as Latin-1) rather than NSTRING (Which the code suggests should be transcoded to UTF-8).


Another issue, this time with iconv. I know this is not a mapserver issue, but it is possible that someone has seen something similar.

We created some tables with strings in NSTRING. I then got the error "msConvertWideStringToUTF8(): General error message. Encoding not supported by libiconv(UTF-16)"

I'm a bit stuck as any call to iconv_open() returns -1, no matter what I put for the from and to. The manual for iconv_open says that if it returns -1 that it sets errno, but it doesn't change the value.

        errno = 1;
        cd = iconv_open("ISO-8859-1", "UTF-8");
        msDebug("errno= %d cd=%d\n",errno,cd);

errno= 1 cd=-1

        errno = 5;
        cd = iconv_open("UTF-8", "UTF-16");
        msDebug("errno= %d cd=%d\n",errno,cd);

errno= 5 cd=-1


        errno = 123;
        cd = iconv_open("", "UTF-16");
        msDebug("errno= %d cd=%d\n",errno,cd);

errno= 123 cd=-1


I've tried loading the gnu iconv first,

export LD_PRELOAD=/server/ndevl18/apache-2.2.9/lib/preloadable_libiconv.so

ldd then shows that library first, but no difference.

When I use the command line 'iconv' utility, it can convert from UTF-8 to ISO-8859-1 with no problem.

  Has anyone seen a problem like this?

OS: Red Hat Enterprise Linux ES release 4 (Nahant Update 4)
ICONV: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz

familiarity at this point) figure out what is going. It is a patch to msEncodeHTMLEntities to encode these characters. As entities they will work as the browser won't care what encoding it thinks the page should be in.

 I added the patch here: http://trac.osgeo.org/mapserver/ticket/2842

Turns out that while this solves my getFeatureInfo problem, it introduces more problems. The various .map files have strings in them that are UTF-8 encoded. In this situatuation we have words like "générale" coming out as "générale" when we do a request=getcapabilities

  Seems things are never as simple as you first think.

--
 Russell McOrmond, Internet Consultant: <http://www.flora.ca/>
 Please help us tell the Canadian Parliament to protect our property
 rights as owners of Information Technology. Sign the petition!
 http://digital-copyright.ca/petition/ict/     http://KillBillC61.ca

 "The government, lobbied by legacy copyright holders and hardware
  manufacturers, can pry control over my camcorder, computer,
  home theatre, or portable media player from my cold dead hands!"
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to