<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'><div style="text-align: left;">If it's not to late and I can put in a vote for the type of Unicode to support I'd like to vote it be UTF-16. Most of the Windows platforms like 2000, and XP have their internal character representation as UTF-16. NT was UCS-2 though but&nbsp; UTF-16 is compatible with UCS-2 from U+0000 through U+FFFF it just doesn't support surrogate pairs so UTF-16 can support the entire BMP and the highest planes of Unicode while UCS-2 cannot. .Net also internally maintains it's characters as UTF-16. The fact that windows internally is UTF-16 may be why an earlier poster had problems with UTF-8 encoded paths. I know shapelib isn't Windows specific but if we support UTF-16 it will make windows development a whole lot easier and I don't think it would make *nix or other platform development any harder using UTF-16 instead of UTF-8. Mac OS X's Cocoa and Core foundation frameworks use UTF-16 internally as does the Java bytecode environment. I haven't worked on *nix platforms in almost two years now so I can't remember what they use internally. Anyway those are my thoughts and if it isn't to late to vote for the Unicode format we support I would like to throw my hat in UTF-16s corner.<br>Thank you,<br>Andy Canfield<br></div><br><br><br><hr id="stopSpelling">&gt; Date: Fri, 7 Dec 2007 20:36:01 +0100<br>&gt; From: mateusz@loskot.net<br>&gt; To: shapelib@lists.maptools.org<br>&gt; Subject: Re: [Shapelib] Re: shapelib improvements<br>&gt; <br>&gt; Bram de Greve wrote:<br>&gt; &gt; Tom Kazimiers wrote:<br>&gt; &gt;&gt; Mateusz Loskot schrieb:  <br>&gt; &gt;&gt;   <br>&gt; &gt;&gt;&gt; Tom,<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Perhaps we could make a unicode branch of Shapelib.<br>&gt; &gt;&gt;&gt; Frank's opinion is most important here, not mine<br>&gt; &gt;&gt;&gt;   <br>&gt; &gt;&gt;&gt;     <br>&gt; &gt;&gt; This would be a good thing<br>&gt; &gt;&gt;   <br>&gt; &gt;&gt;&gt;&gt; But if you use shapelib as a dll from another program, esp. a managed<br>&gt; &gt;&gt;&gt;&gt; code one (I use C#) - on windows CE you have the only option to call<br>&gt; &gt;&gt;&gt;&gt; with unicode parameters. This means you have to write wrappers which<br>&gt; &gt;&gt;&gt;&gt; to the transformation or one makes the dll unicode aware (this is<br>&gt; &gt;&gt;&gt;&gt; what I did). Are there any ways to get a managed to unmanaged call on<br>&gt; &gt;&gt;&gt;&gt; Win CE working with char?<br>&gt; &gt;&gt;&gt;&gt;     <br>&gt; &gt;&gt;&gt;&gt;       <br>&gt; &gt;&gt;&gt; Doesn't marchaling to UnmanagedType.LPStr work?<br>&gt; &gt;&gt;&gt; Also, CharSet attribute of DLLImport to control how encoding information<br>&gt; &gt;&gt;&gt; is marshalled. CharSet.Ansi is default for C++, so Unicode-&gt;ANSI is<br>&gt; &gt;&gt;&gt; translated automatically.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Sure it is on a "normal" desktop computer - but in Win CE environment<br>&gt; &gt;&gt; one can only choose CharSet.Unicode as the whole OS works only with unicode.<br>&gt; &gt;&gt; The UnmanagedType.LPStr I did not try out - I will test it. But since I<br>&gt; &gt;&gt; have read that Win CE can only handle unicode I doupt it  would work.<br>&gt; &gt; <br>&gt; &gt; It might solve your problems with unicode filenames, but how will you<br>&gt; &gt; cope with textual content<br>&gt; <br>&gt; Bram,<br>&gt; <br>&gt; We are discussing solution for encodings of file paths only.<br>&gt; Certainly, it wouldn't solve problems with handling localized content<br>&gt; (strings) but this is another subject.<br>&gt; <br>&gt; &gt; You will need to build in all your encodings<br>&gt; &gt; as internally all textural content is char* exclusively (with various<br>&gt; &gt; encodings).  That can be done?<br>&gt; <br>&gt; Yes, it can.<br>&gt; However, it is complex task and would require use of char codes<br>&gt; encoders/decoders like iconv.<br>&gt; <br>&gt; This subject will probably be covered along with implementation of<br>&gt; GDAL/OGR RFC 5 (http://trac.osgeo.org/gdal/wiki/rfc5_unicode).<br>&gt; <br>&gt; &gt; Also, I suggest to first consider if you can't solve your problems with<br>&gt; &gt; wrapper code.  Not wrapper code around the DLL, but building a unicode<br>&gt; &gt; DLL with wrapper code around the original.  That way, you don't have to<br>&gt; &gt; branch (or to fork), which might be beneficial to both ...<br>&gt; <br>&gt; This won't solve all possible problems with internationalized paths.<br>&gt; IMHO, simpler and cleaner solution is to replace current I/O calls with<br>&gt; Unicode-aware calls from C/C++ libraries. The main disadvantage is that<br>&gt; it will introduce new fork. However, Shapelib is not a big library, it's<br>&gt; just 3 files of code, so forking does not sound as a problem for<br>&gt; possible merge in future.<br>&gt; <br>&gt; Cheers<br>&gt; -- <br>&gt; Mateusz Loskot<br>&gt; http://mateusz.loskot.net<br>&gt; _______________________________________________<br>&gt; Shapelib mailing list<br>&gt; Shapelib@lists.maptools.org<br>&gt; http://lists.maptools.org/mailman/listinfo/shapelib<br><br /><hr />Share life as it happens with the new Windows Live. <a href='http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007' target='_new'>Share now!</a></body>
</html>