Вопрос

Я использую функцию MD5 и AND64, кодирующую для генерации секрета пользователя (используется для входа в уровень передачи данных по использованным API)

Я сделал код в JavaScript И все в порядке, но в целях C Я борюсь со Сгустом

Мой код:

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 не шоу, чтобы автоматически добавить спецификацию, как в C # :-(

Как я могу правильно добавить спецификацию?

Это было полезно?

Решение

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

NSString *sourceString = [[NSString alloc] initWithFormat:@"\357\273\277%@", str];

Другие советы

Возможно, вам придется добавить BOM к объекту NSDATA, а не NSSTRING. Что-то вроде этого:

char BOM[] = {0xEF, 0xBB, 0xBF};
NSMutableData* data = [NSMutableData data];
[data appendBytes:BOM length:3];
[data appendData:[strMd5 dataUsingEncoding:NSUTF8StringEncoding]];

У меня была подобная проблема с SWIFT и открытием CSV Fime в Excel.Этот вопрос Также помог мне много.

Простое решение для Swift с файлом CSV:

let BOM = "\u{FEFF}"
csvFile.append(BOM)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top