A couple of weeks ago or so, I asked about using OCaml file primitives with the Camomile library for Unicode on Windows. I thought I'd update people on the list about my resolution of these issues.
I decided to make the application UTF-8 throughout, so that the string type always means UTF-8 -- OK, there are a few exceptions to that rule. The SQLite3 library already deals with UTF-8 in a graceful way, The same is true for the C/C++ parsing library I'm using. That leaves the OCaml library procedures, like open_in and open_out, which definitely don't handle Unicode filenames on Windows. I took the OCaml sources and made modified versions of functions, like file_exists, open_in, and so on, that convert filenames from UTF-8 to UTF-16 and then used "wide" versions of the underlying Win32 primitives. In some cases, I had to convert UTF-16 back to UTF-8. The Win32 functions MultiByteToWideChar and WideCharToMultiByte handle those conversions nicely. I link in these new functions, named file_exists_win32, open_in_win32, etc., and everything works a treat. -- Paul _______________________________________________ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs