creare una stringa UTF-8 con BOM
-
24-09-2019 - |
Domanda
Sto usando MD5 funzione e la Codifica Base64 per generare un Utente Segreto (utilizzato per l'accesso ai dati a livello di API)
Ho fatto il codice javascript e va bene, ma in Objective C sto strugling con il BOM
il mio codice è:
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];
utilizzando il codice di cui sopra io sto a memoria:
(fonte: balexandre.com)
strega non è quello che ho davvero bisogno...
Ho anche provato con
"%c%c%c%@", (char)239, (char)187, (char)191, str
senza fortuna...
utilizzando UTF8String
non cuce per aggiungere il BOM automaticamente in C# :-(
Come posso aggiungere il BOM correttamente ?
Soluzione
Tenta di incorporare il BOM direttamente nella stringa di formato come carattere di escape letterali:
NSString *sourceString = [[NSString alloc] initWithFormat:@"\357\273\277%@", str];
Altri suggerimenti
Potrebbe essere necessario aggiungere la DISTINTA base per la NSData oggetto, non il NSString.Qualcosa di simile a questo:
char BOM[] = {0xEF, 0xBB, 0xBF};
NSMutableData* data = [NSMutableData data];
[data appendBytes:BOM length:3];
[data appendData:[strMd5 dataUsingEncoding:NSUTF8StringEncoding]];
Ho avuto un simile problema con Swift e apertura CSV fime in Excel.Questa domanda inoltre mi ha aiutato molto.
Soluzione semplice per swift con file CSV:
let BOM = "\u{FEFF}"
csvFile.append(BOM)