* Jonathan Pryor: > On Mon, 2005-10-17 at 19:03 +0200, Florian Weimer wrote: >> Why are UTF-16 strings used in Mono.Unix? Doesn't this mean that some >> resources are inaccessible to programs running under Mono in a >> multibyte localeq (such as one using UTF-8)? > > Care to elaborate? System.String is always used to represent strings in > Mono.Unix and Mono.Unix.Native, but Mono's marshaler will convert the > strings to UTF-8 for the P/Invoke call.
UNIX systems do not have a system-wide locale. Some user might run under a single-byte locale and create a file named "Ärger.txt" (whose name consists of exactly nine bytes in his locale). Another user who uses UTF-8 cannot access this file using any name that is valid UTF-8. For applications written in C, this is typically not a problem because you can pass the necessary byte string on the command line (entering ?rger.txt in the shell, which performs expansion), but this won't work with Mono applications. A first step in a direction to fix that would be to use native strings (multibyte strings) for accessing native APIs. _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
