我们需要使用用户生成的密码来做某事
我们遇到密码包含ä
的情况,但是当我们从中创建CFDictionaryRef
时,框架会将字符更改为\U00e4
。
const void *keys[] = { somObj};
const void *values[] = { (CFStringRef)[passwords objectAtIndex:i] };
CFDictionaryRef optionsDictionary = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL);
是否可以在目录中将\U00e4
替换为ä
?
答案 0 :(得分:1)
更有可能的是,您的字符串编码未被保留。正如安东尼所说,\U00e4
ä
。那是UTF-16。在UTF-8中,它是0xC3 0xA4
。 UTF-32? 0x000000E4
。
您需要将密码视为原始数据的缓冲区。在进入时 - 确保条目本身具有正确的编码 - 将其粘贴在NSData中并保留在那里。