我有一些 NSData 作为字节传入
const void *bytes = [responseData bytes];
这些字节最初是 UTF8 格式的,我现在正试图将它们转换为 UTF8 NSString 而不会弄乱编码。
我以前写过这个,如果将字节复制到一个 cstring 中,这通常会很好,除非我在字节中有任何非英文字符,它需要两个字节而不是一个。这意味着当我将字符串中的任何国际字符复制到 cstring 中时,它们都会变得混乱。
因此,需要将字节直接复制到 UTF8 格式的对象中的原因。如果可能的话,最好是 NSString。
这就是我处理转换的方式,后来我发现这是错误的,但希望能让您对我想要实现的目标有一个很好的了解。
else if (typeWithLocalOrdering == METHOD_RESPONSE)
{
cstring = (char *) malloc(sizeWithLocalOrdering + 1);
strncpy(cstring, bytes, sizeWithLocalOrdering);
cstring[sizeWithLocalOrdering] = '\0';
NSString *resultString = [NSString stringWithCString:cstring encoding:NSUTF16StringEncoding];
methodResponseData =[resultString dataUsingEncoding:NSUTF16StringEncoding]; // methodResponseData is used later on in my parsing method
// Take care of the memory allocatoin, so that you can find the endoffile notification
free(cstring);
bytes += sizeWithLocalOrdering;
length -= sizeWithLocalOrdering;
}
任何帮助将不胜感激。