I cert Informationen lesen durch VerwendungWie um zu überprüfen NSString kodieren
NSString *summary = CFBridgingRelease(SecCertificateCopySubjectSummary(cert));
die die cert Zusammenfassung erhalten, wenn die Zusammenfassung chinesisch ist, wie 中
, die Zusammenfassung Rückkehr als ä¸
wie kann ich kodieren ä¸
bis 中
richtig?
Der Code, wie ich cert Zusammenfassung
CFMutableDictionaryRef query = CFDictionaryCreateMutable(nil, 4, nil, nil);
CFDictionaryAddValue(query, kSecClass, kSecClassCertificate);
CFDictionaryAddValue(query, kSecMatchLimit, (const void *)@(100));
CFDictionaryAddValue(query, kSecReturnRef, kCFBooleanTrue);
CFArrayRef items;
OSStatus status = SecItemCopyMatching(query, (CFTypeRef *)&items);
NSArray *certificates = CFBridgingRelease(items);
for (int i = 0; i < certificates.count; i++)
{
SecCertificateRef certificate = (__bridge SecCertificateRef)certificates[i];
NSString *summary = (NSString *)CFBridgingRelease(SecCertificateCopySubjectSummary(certificate);
NSLog(@"%@", summary);
}
erhalten, wenn Zusammenfassung eine chinesische Zeichenfolge ist, ist das Ergebnis nicht richtig.
Wie haben Sie die Zusammenfassung untersucht? Zeigen Sie die Code- oder Debuggerbefehle an, die Sie zum Anzeigen/Drucken/Protokollieren und der genauen Ausgabe verwendet haben. –
fügen Sie den Code in der Frage hinzu, thx. – waitianlou
Sie haben eine schließende Klammer in der 'SecCertificateCopySubjectSummary()' Zeile, was mich fragt, wie sich das von Ihrem echten Code unterscheidet. Es kann jedoch sein, dass dies nur ein Fehler in 'SecCertificateCopySubjectSummary()' ist. Ein "NSString" oder "CFString" soll codierungsneutral sein. Oder eine andere Art, darüber nachzudenken, sollte bereits in eine interne Repräsentation entschlüsselt werden. Die API bezieht sich auf "Zeichen", womit eigentlich UTF-16-Code-Einheiten gemeint sind, aber die interne Darstellung könnte alles sein. Es sollte nicht möglich sein, einen solchen Codierungsfehler zu bekommen. –