非常诡异的现象,字典里明明是"Dsdcdc",取出来就少了几个字节?!
当然,最后发现问题也很简单。原本的text是我从NSData转出来的,结果系统给后面加了一些尾巴
NSData转NSString用的这个方法
[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
initWithData:encoding
的文档特别说明,里面的数据会先转换为UTF-16,结果里面一个'\0'会变成2个
An NSString object initialized by converting the bytes in data into UTF-16 code units using encoding. The returned object may be different from the original receiver. Returns nil if the initialization fails for some reason (for example if data does not represent valid data for encoding).
当把这个string丢给UITextFiled,能正常显示0前面的,继续输入文字内部调用append方法,加到了'\0'后面。Debugger能全部显示,但是你po处理就只有前面一部分。
正确的方法是UTF8的data转NSString,用下面的方法可以了
[NSString stringWithUTF8String:data.bytes];;
网友评论