Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

create an UTF-8 string with BOM

I'm using MD5 function and Base64 Encoding to generate a User Secret (used to login to data layer of the used API)

I did the code in javascript and it's fine, but in Objective C I'm strugling with the BOM

my code is:

NSString *str = [[NSString alloc] 
                 initWithFormat:@"%@%@%@%d", 
                    [auth uppercaseString], 
                    [user uppercaseString], 
                    [pwd uppercaseString], 
                    totalDaysSince2000];

NSString *sourceString = [[NSString alloc] initWithFormat:@"%02x%02x%02x%@", 
                          0xEF, 
                          0xBB, 
                          0xBF, 
                          str]; 

NSString *strMd5 = [sourceString MD5]; 

NSData *sourceData = [strMd5 dataUsingEncoding:NSUTF8StringEncoding];  
NSString *base64EncodedString = [[sourceData base64EncodedString] autorelease];  

using the code above I'm getting into the memory:

alt text
(source: balexandre.com)

witch is not what I really need...

I even tried with

"%c%c%c%@", (char)239, (char)187, (char)191, str

with no luck...

using UTF8String does not seam to append the BOM automatically as in C# :-(

How can I append the BOM correctly ?

like image 374
balexandre Avatar asked Apr 06 '10 13:04

balexandre


1 Answers

Try embedding the BOM directly in the format string as escaped character literals:

NSString *sourceString = [[NSString alloc] initWithFormat:@"\357\273\277%@", str];
like image 172
Ferruccio Avatar answered Sep 21 '22 01:09

Ferruccio