This question already has answers here:
Proper way to convert char* to NSString without initWithCString?
(3个答案)
6年前关闭。
这是我的字符数组返回的内容:
(char *)methodChars = 0x090f5e00“开始在大锅中煮意大利面。\ xa0同时,用油和热将大锅喷雾。\ xa0 \ xa0加入洋葱和芹菜,用中火煮3分钟或直到变软为止。逐渐加入玉米粉混合物,并不断搅拌。 pan。\ xa0搅拌以混合并立即食用。”
我在这里转换它,这就是我得到的:
这是我从方法中得到的:
零
有人可以解释原因,我该如何解决?
在methodChars不包含
(3个答案)
6年前关闭。
这是我的字符数组返回的内容:
char *methodChars = (char *) sqlite3_column_text(statement, 3);
(char *)methodChars = 0x090f5e00“开始在大锅中煮意大利面。\ xa0同时,用油和热将大锅喷雾。\ xa0 \ xa0加入洋葱和芹菜,用中火煮3分钟或直到变软为止。逐渐加入玉米粉混合物,并不断搅拌。 pan。\ xa0搅拌以混合并立即食用。”
我在这里转换它,这就是我得到的:
NSString *method = [[NSString alloc] initWithUTF8String:methodChars];
这是我从方法中得到的:
零
有人可以解释原因,我该如何解决?
在methodChars不包含
\xa0
而是仅包含空格的情况下,此代码适用于某些情况。谁能解释为什么这可能是原因? 最佳答案
您的字符串未使用UTF-8编码:它包含字节\xa0
。如果该字符串应包含U + 00A0不间断空格字符,则应将其编码为\xc2\xa0
。
您可以使用\xa0
映射到有效字符的编码来创建字符串,例如:
NSString *method = [[NSString alloc] initWithCString:methodChars encoding:NSISOLatin1StringEncoding];
10-08 06:29