这是我的chars数组返回的内容:
char *methodChars = (char *) sqlite3_column_text(statement, 3);
(char *)methodChars = 0x090f5e00“开始在一大锅开水中煮意大利面。\ xa0同时,用油和热量喷一个大锅。\ xa0 \ xa0加入洋葱和芹菜,用中火煮3分钟或直到软。\ xa0搅拌玉米粒。\ xa0将玉米粉放入一个小碗中,逐渐加入80毫升(1/3杯)牛奶,搅拌至均匀。\ xa0将剩余的牛奶和原料加入然后将锅逐渐加入玉米粉混合物,不断搅拌。\ xa0继续搅拌,直到酱汁沸腾并变稠。\ xa0从热源中取出并在奶酪中搅拌直至融化。\ xa0当面食变硬时,沥干并加入金枪鱼到锅里。\ xa0搅拌混合,立即服务。“
继承我转换它的地方,这就是我得到的:
NSString *method = [[NSString alloc] initWithUTF8String:methodChars];
这是我从方法中获得的:
零
有人可以解释原因,以及我如何解决这个问题?
此代码适用于某些情况,当methodChars不包含\xa0
并且只是有空格时。谁能解释为什么这可能是一个原因?
答案 0 :(得分:5)
您的字符串未以UTF-8编码:它包含字节\xa0
。如果该字符串应该包含U + 00A0非中断空格字符,那么它应该被编码为\xc2\xa0
。
您可以使用\xa0
映射到有效字符的编码创建字符串,例如:
NSString *method = [[NSString alloc] initWithCString:methodChars encoding:NSISOLatin1StringEncoding];