This question already has answers here:
Proper way to convert char* to NSString without initWithCString?
                                
                                    (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