On Jul 30, 2010, at 4:09 PM, Dave DeLong wrote:

> Hi everyone,
> 
> I have a seemingly simple question, but I haven't been able to figure it out.
> 
> Given a file, how can I determine the NSStringEncoding of the file, without 
> reading the entire file into memory?  (If the file isn't a text file, then 
> defaulting to NSUTF8StringEncoding is just fine, since my code will only work 
> properly if I'm working with text files anyway)
> 
> I've found this: 
> http://www.macosxguru.net/article.php?story=20030808081801868 but it seems 
> ridiculously complex...

Check the first two bytes. If they are 0xFEFF or 0xFFFE, then it is guaranteed 
to be in Unicode (UTF-16) format. Otherwise, it can be in pretty much any 
format, since pretty much every format that is not Unicode doesn't use 
identifiers of any sort.

NSAttributedString has a heuristic importer in its AppKit category that tries 
to guess the encoding of the file, 
-initWithData:options:documentAttributes:error:, but it is not perfect (in 
particular, it tends to mistake data in UTF-8 format for something else). So if 
it's not Unicode, then you're probably better off just asking the user to tell 
the program the encoding of the file. We ended up doing this in several of our 
apps.

Nick Zitzmann
<http://www.chronosnet.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

Reply via email to