我正在构建一个数据包,通过 NSStream 发送到服务器。我试图用“§”(ascii 代码 167)分隔两条数据。这就是服务器的构建方式,所以我需要尝试保持在这些范围内......
unichar asciiChar = 167; //yields @"§"
[self setSepString:[NSString stringWithCharacters:&asciiChar length:1]];
sendData=[NSString stringWithFormat:@"USER User%@Pass", sepString];
NSLog(sendData);
const uint8_t *rawString=(const uint8_t *)[sendData UTF8String];
[oStream write:rawString maxLength:[sendData length]];
所以最终的结果应该是这样的..并且它在第一次构造 sendData 时是这样的:
USER User§Pass
但是,当服务器端收到它时,它看起来像这样:
//not a direct copy and paste. The 'mystery character' may not be exact
USER UserˤPas
...分隔符字符串的长度变为两个,并且最后一个字母从命令中被剪掉。我认为这是由 UTF8 转换引起的。
有人能为我解释一下吗?
任何帮助将不胜感激!
该字符的正确 UTF-8 编码是两字节序列 0xC2 0xA7,这就是您所得到的。 (文件格式.info对于这个东西来说是无价的。)这不属于 LATIN-1 集,因此您几乎肯定希望使用 NISOLatin1StringEncoding 而不是 NSUTF8StringEncoding 来获得单字节 167 编码。看着NSString -dataUsingEncoding:
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)