0

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

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

NSString *safedevicename = [[UIDevice currentDevice] name];
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"`" withString:@"'"];

它没有发现波浪号的出现,也没有替换任何内容。我也曾经rangeOfString搜索过波浪号,但它什么也没返回。我 100% 确定这个字符,至少在 iTunes 中输入时,是一个波浪号。

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

有谁知道我怎样才能抓住这个角色并把它弄出来?此外,在目标 C 中是否有一种方法可以更轻松地清理字符串以确保通过套接字发送是安全的?

编辑:还有一些可能有用的东西,将 NSString 写入 NSOutputString 我使用以下代码行:

len = [oStream write:[[writeString dataUsingEncoding:NSASCIIStringEncoding] bytes] maxLength:[writeString lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];

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

safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"\\u00b4" withString:@"'"];
4

1 回答 1

0

Jason 的评论是正确的答案:我需要将编码从 更改NSASCIIStringEncodingNSUTF8StringEncoding.

于 2010-03-25T17:08:05.763 回答