Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

objective c - 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 ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

NSString *sourceString = [[NSString alloc] initWithFormat:@"357273277%@", str];

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...