On Thu, Feb 5, 2009 at 9:41 AM, Nick Zitzmann <n...@chronosnet.com> wrote: > > On Feb 5, 2009, at 10:29 AM, Francis Devereux wrote: > >> I have an NSString with a filename in it that I need to pass to the >> portable code as a char *. The portable code will then pass it to UNIX file >> handling functions like fopen(). >> >> I guess that I need to use NSString's getCString:maxLength:encoding: >> method, but what should I pass for the encoding parameter? Phrased another >> way, what encoding does fopen() expect filenames to be in? > > > You guessed incorrectly, actually. Always use -fileSystemRepresentation or > -getFileSystemRepresentation:maxLength:.
While fileSystemRepresentation is the correct call to use, ... > -UTF8String will incidentally work > for HFS+ and UFS, but it probably won't work with legacy file systems that > don't support Unicode, such as HFS. ... this is not correct. The encoding of strings passed to the POSIX/BSD layer of the OS does not change based on the filesystem. Passing a UTF-8 string to open() will work just fine on HFS, FAT-32, UFS, whatever. The point of using fileSystemRepresentation is to protect you against changes in the future (i.e. if some new, UTF-better encoding comes out, and Apple ever decides to use that encoding for their BSD calls.) -- Clark S. Cox III clarkc...@gmail.com _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com