在我的应用程序中,我使用 ASCII 字符串编码将 NSString 转换为 NSData。对于以下情况,我无法将字符串转换为数据,因为它包含一些特殊字符。我能够使用 UTF 8 正确编码,但我需要使用 ascii,因为服务器也配置为使用 ASCII。
NSData *ldata=[@"CASTAÑO" dataUsingEncoding:NSASCIIStringEncoding];
请帮我解决这个问题。
提前致谢
你的意思是你想在你的 NSData 中将“CASTAÑO”转换为“CASTANO”吗?
使用dataUsingEncoding:allowLossyConversion:
如:
NSData *ldata=[@"CASTAÑO" dataUsingEncoding:NSASCIIStringEncoding
allowLossyConversion:YES];
使用 MIME 传输数据怎么样?MIME 是使用 ASCII 字符对各种文件类型进行编码的标准方法。它通常用于使用不支持任何非 ASCII 数据的 SMTP 协议发送非 ASCII 电子邮件。
有一些类别可以扩展 NSData/NSString 以使用 MIME 对数据进行编码(这将导致 ASCII 字符。)我认为这不是您的即时解决方案,但根据您的限制(仅限 ASCII 服务器),MIME 应该是最佳解决方案。
请参阅: http: //www.mulle-kybernetik.com/software/EDFrameworks/download.html#EDMessage 和 http://bitbucket.org/portablek/mimekit/overview
即使服务器配置为使用 ASCII,我也能够使用 NSISOLatin1StringEncoding 对数据进行编码和解码。
NSData *ldata=[@"CASTAÑO" dataUsingEncoding:NSISOLatin1StringEncoding];
特殊字符 'Ñ' 是扩展的 ascii 字符,不会被 ASCII 编码。