在我们的应用程序的iPhone和桌面版本之间的网络中,iPhone通过设备名称发送以便在桌面上使用。问题是一些beta测试人员的设备名称中有波浪号(`)。出于某种原因,当它在设备名称中时,它会阻止套接字发送实际的字符串数据。
我尝试在发送之前简单地清理设备名称,但设备名称中的波形符号(在iTunes中输入)在运行时无法识别为波形符号。这是不起作用的代码:
NSString *safedevicename = [[UIDevice currentDevice] name];
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"`" withString:@"'"];
它没有发现波浪号,也没有替换。我还使用rangeOfString
来搜索波浪号,但它什么也没有返回。我百分百肯定这个角色,至少在iTunes中输入时,是一个波浪号。
此外,在将字符串的描述打印到控制台时,该字符编码为\u00b4
,当将鼠标悬停在变量上时,它显示为句点.
。
任何人都知道如何抓住这个角色并将其从那里拿出来?另外,在目标C中是否有办法更方便地清理字符串以确保通过套接字发送是安全的?
编辑: 将NSString写入NSOutputString也可能有用,我使用以下代码行:
len = [oStream write:[[writeString dataUsingEncoding:NSASCIIStringEncoding] bytes] maxLength:[writeString lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];
编辑#2:编辑#2:
这行代码可以替代Tilde,但我确信还有其他一些我应该担心的角色:
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"\\u00b4" withString:@"'"];
答案 0 :(得分:0)
Jason的评论是正确的答案:我需要将编码从NSASCIIStringEncoding
更改为NSUTF8StringEncoding
。