Pergunta

Estou usando a função MD5 e a codificação base64 para gerar um segredo do usuário (usado para fazer login na camada de dados da API usada)

Eu fiz o código em JavaScript E tudo bem, mas no objetivo C estou lutando com o Bom

Meu código é:

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

Usando o código acima, estou entrando na memória:

alt text
(fonte: balexandre.com)

Bruxa não é o que eu realmente preciso ...

Eu até tentei com

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

sem sorte ...

usando UTF8String não costure para anexar o BOM automaticamente como em C# :-(

Como posso anexar o nascimento corretamente?

Foi útil?

Solução

Tente incorporar o nascimento diretamente na sequência do formato como literais de caracteres escapados:

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

Outras dicas

Pode ser necessário adicionar o nascido ao objeto NSDATA, não ao NSString. Algo assim:

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

Eu tive um problema semelhante com o Swift e a abertura do CSV no Excel.Essa questão Também me ajudou muito.

Solução simples para Swift com o arquivo CSV:

let BOM = "\u{FEFF}"
csvFile.append(BOM)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top