создайте строку UTF-8 с BOM

Я использую функцию MD5, и Кодирование Base64 для генерации Пользовательского Секрета (раньше входил в слой данных используемого API),

Я сделал код в JavaScript, и он прекрасен, но в Objective C я борюсь с BOM

мой код:

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];  

с помощью кода выше я вхожу в память:

alt text
(источник: balexandre.com)

ведьма не то, в чем я действительно нуждаюсь...

Я даже попробовал

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

без удачи...

использование UTF8String не делает шва для добавления BOM автоматически как в C# :-(

Как я могу добавить BOM правильно?

6
задан Glorfindel 12 July 2019 в 07:06
поделиться

2 ответа

Попробуйте встроить спецификацию непосредственно в строку формата в виде экранированных символьных литералов:

NSString *sourceString = [[NSString alloc] initWithFormat:@"\357\273\277%@", str];
8
ответ дан 8 December 2019 в 16:00
поделиться

Возможно, вам придется добавить спецификацию к объекту NSData, а не к NSString. Примерно так:

char BOM[] = {0xEF, 0xBB, 0xBF};
NSMutableData* data = [NSMutableData data];
[data appendBytes:BOM length:3];
[data appendData:[strMd5 dataUsingEncoding:NSUTF8StringEncoding]];
7
ответ дан 8 December 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: