Skip navigation.
 
mlRe: How to convert UInt8 array to NSString
FROM : Aki Inoue
DATE : Tue May 06 19:45:39 2008

On 2008/05/06, at 8:56, Jens Alfke wrote:

>
> On 6 May '08, at 7:03 AM, Thomas Engelmeier wrote:
>

>> As the OP wants to create NSStrings with data created by his 
>> application I'm pretty sure he will not want the the Windows 
>> encoding - unless he parses text documents originating from Windows.

>
> He didn't say where the data originates from, or what those APIs are 
> that return the strings. If they're networking APIs, the data could 
> very likely have originated on Windows.
>
> Also, you missed my point about using CP1252 (WinLatin1). It's 
> useful as a fallback for any unknown C strings because (a) it's a 
> superset of ISO-Latin-1, which (b) has no gaps in it (as ISO does, 
> from 0x80-0x9F), so decoding text into an NSString will never fail 
> and return nil. (I've debugged several crashes that stemmed from nil 
> NSStrings decoded from garbage strings.)

Jens,

Actually, I don't recommend using CP1252 as the generic fallback 
encoding like this.

The encoding does have gaps, and the handling of those invalid gaps 
varies between conversion engines.  CF/NSString treat the invalid 
bytes strictly and return nil encountering those.

Also, being compatible with ISO Latin1 (aka ISO 8859-1) is becoming 
less compelling reasons in the Net since the overall percentage of the 
encoding (both ISO 8859-1 and cp1252 combined) is declining.

>> If the bytes come from MacOS text files he may want to use the 
>> MacRoman encoding, otherwise creating UTF8 and passing around 
>> NSStrings will be the way to go - especially in Europe where all 
>> that äöüñá goodies exist.

>
> For the most part only old (pre-OS X) files would still be using 
> MacRoman. Current Mac apps generally default to UTF-8.

So, our recommendation now is to try UTF-8 first; then, try some other 
encoding deduced from the context (user's localization, intended 
source/destination of the data, etc).  If all failed, should try 
MacRoman as the ultimate fallback (the encoding has no gap so never 
fails).

Aki

>
>
> —Jens_______________________________________________
>
> Cocoa-dev mailing list (<email_removed>)
>
> 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/<email_removed>
>
> This email sent to <email_removed>

Related mailsAuthorDate
mlHow to convert UInt8 array to NSString Marc Lohse May 5, 14:17
mlRe: How to convert UInt8 array to NSString Hank Heijink (Mail… May 5, 14:56
mlRe: How to convert UInt8 array to NSString Jens Alfke May 5, 18:20
mlRe: How to convert UInt8 array to NSString Thomas Engelmeier May 6, 16:03
mlRe: How to convert UInt8 array to NSString Jens Alfke May 6, 17:56
mlRe: How to convert UInt8 array to NSString Aki Inoue May 6, 19:45
mlRe: How to convert UInt8 array to NSString Clark Cox May 6, 19:56
mlRe: How to convert UInt8 array to NSString Ricky Sharp May 7, 00:37
mlRe: How to convert UInt8 array to NSString Jens Alfke May 7, 04:22
mlRe: How to convert UInt8 array to NSString Ricky Sharp May 7, 04:53
mlRe: How to convert UInt8 array to NSString Gary L. Wade May 7, 19:33
mlRe: How to convert UInt8 array to NSString Jean-Daniel Dupas May 7, 20:54
mlRe: How to convert UInt8 array to NSString Gary L. Wade May 7, 21:27
mlRe: How to convert UInt8 array to NSString Jean-Daniel Dupas May 7, 21:36
mlRe: How to convert UInt8 array to NSString Adam R. Maxwell May 7, 22:14
mlRe: How to convert UInt8 array to NSString Gary L. Wade May 8, 20:07
mlRe: How to convert UInt8 array to NSString Joe Goh May 8, 21:26