首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备名称中的波浪符号导致NSOutputStream套接字出现问题

问设备名称中的波浪符号导致NSOutputStream套接字出现问题
EN

Stack Overflow用户
提问于 2010-03-25 23:37:25
回答 1查看 759关注 0票数 0

在我们的应用程序的iPhone和桌面版本之间的网络中,iPhone发送在桌面上使用的设备名称。问题是一些beta测试者在他们的设备名称中有波浪号(`)。由于某些原因,当它在设备名称中时,它会阻止套接字发送实际的字符串数据。

我试着在发送之前简单地清理设备名称,但是设备名称中的波浪号(在iTunes中输入)在运行时不能识别为波浪号。下面是不起作用的代码:

代码语言:javascript
复制
NSString *safedevicename = [[UIDevice currentDevice] name];
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"`" withString:@"'"];

它找不到代字号的匹配项,也不会替换任何内容。我还使用了rangeOfString来搜索代字号,结果什么也没有返回。我100%确定这个字符,至少在iTunes中输入时是一个代字号。

此外,当将字符串的描述打印到控制台时,字符被编码为\u00b4,当将鼠标悬停在变量上时,它显示为句点.。

有人知道我怎么才能抓住这个角色并把它弄出来吗?另外,在objective C中,有没有一种方法可以更容易地清理字符串,以确保通过套接字发送它是安全的?

编辑:为了将NSString写入NSOutputString,我使用以下代码行:

代码语言:javascript
复制
len = [oStream write:[[writeString dataUsingEncoding:NSASCIIStringEncoding] bytes] maxLength:[writeString lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];

编辑#2:这行代码可以替换波浪号,但我确信还有其他字符我应该担心:

代码语言:javascript
复制
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"\\u00b4" withString:@"'"];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-26 01:08:06

Jason的评论是正确的答案:我需要将编码从NSASCIIStringEncoding更改为NSUTF8StringEncoding。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2516931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档