0

这是我的字符数组返回的内容:

 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];

这是我从方法中得到的:

有人可以解释为什么,以及我如何解决这个问题吗?

\xa0当 methodChars 不包含并且只有一个空格时,此代码适用于某些情况。谁能解释为什么这可能是一个原因?

4

1 回答 1

5

您的字符串未以 UTF-8 编码:它包含 byte \xa0。如果字符串应该包含 U+00A0 不间断空格字符,它应该被编码为\xc2\xa0.

您可以使用\xa0映射到有效字符的编码创建字符串,例如:

NSString *method = [[NSString alloc] initWithCString:methodChars encoding:NSISOLatin1StringEncoding];
于 2013-10-08T22:15:44.267 回答