ios特殊字符问题

Posted

技术标签:

【中文标题】ios特殊字符问题【英文标题】:ios special characters issue 【发布时间】:2012-09-24 10:30:05 【问题描述】:

在我的应用程序中,当我尝试将附加字符串设置为 UIlabel 时,未显示特殊字符。请帮我解决这个问题。

谢谢

【问题讨论】:

【参考方案1】:

如果你的键盘上有一个欧元字符,你可以直接使用它:

[lLabel setText:@"€"];

否则使用 Unicode 转义:

[lLabel setText:@"\u20AC"];

添加 Foundation 框架和 NSString 类不知道像“¿euro¿”这样的转义序列,因此您必须手动替换它:

NSString *s = @"abc ¿euro¿ def";
NSString *d = [s stringByReplacingOccurrencesOfString:@"¿euro¿" withString:@"\u20AC"];

【讨论】:

欧元、倒问号等特殊符号来自网络服务,为此我使用了 utf8 字符串编码。因此,当我尝试显示它们时,这些字符没有显示,所以在这种情况下,我无法对这些值进行硬编码,因为这些值是动态的。对于上述情况,倒置问号未显示,我使用了以下链接,但这不起作用iphonedevsdk.com/forum/iphone-sdk-development/…。你能告诉我如何解决这个问题 @Saikiran:查看我的更新答案。您还应该确保您的 Web 服务中的字符串确实使用了“倒置问号”字符 (Unicode U+00BF),而不是仅显示为倒置问号的其他字符。 :我很惊讶地发现在数据库中我将​​欧元符号设置为自定义名称,但在 Web 服务响应中我收到的是倒置问号而不是欧元符号,我无法替换它您提到的带有 unicode 字符的倒置问号 @Saikiran:我假设字符只是显示为倒置问号。您必须找出您的 Web 服务字符串究竟使用了哪些字符。 仍然没有解决方案.. 尝试了不同的编码风格,但没有找到任何解决方案【参考方案2】:
//Conevrt the string utf-8 format

[yourstringvariabel UTF8String];

【讨论】:

【参考方案3】:

使用NSISOLatinStringEncoding 解决了这个问题。

【讨论】:

如何对字符串变量使用 NSISOLatinStringEncoding?就像遇到问题一样。【参考方案4】:

将字符串转换为 UTF-8,然后将其设置为标签文本。

[label setText:[NSString stringWithFormat:@"%s",[@"your_string" UTF8String]]];

[编辑]

我对此进行了测试,并且无需将字符串转换为 UTF-8 即可正常工作!

label.text = @"¿euro¿";

请确保您的服务器的响应设置为 UTF-8 并且它应该修复它。我遇到了同样的问题,我从 UTF8 的服务器获取字符串 - NSUTF8StringEncoding!我改变了它,其他一切都很好!

例如我这样做:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
request.defaultResponseEncoding = NSUTF8StringEncoding;

【讨论】:

这两种方法都行不通。 dataUsingEncoding: 返回 NSData *UTF8String 返回 const char *。但是[UILabel setText:] 需要NSString * 参数。 @Martin 我一直在使用它,但不是直接在字符串上使用,而是从服务器返回的字符串,它工作正常。确保将服务器响应类型设置为 NSUTF8StringEncoding。理想情况下,打印 NSLog 时,它可能会打印无效字符,但如果将其分配给 Label,它将正确显示。 我的意思是你不能使用dataUsingEncodingUTF8String 的结果作为[UILabel setText:] 的参数。您编写的语句将导致编译器警告关于不兼容类型,并在运行时崩溃。 你是对的。我之前没有测试过。更正了答案。如果您从服务器获取字符串,则不必显式使用 UTF-8。只需将服务器的响应默认编码设置为 UTF-8 即可。

以上是关于ios特殊字符问题的主要内容,如果未能解决你的问题,请参考以下文章

如何解析iOS中具有特殊字符的xml数据?

Xcode/ios 5 到 SJso 中的特殊字符

iOS URL带特殊字符(汉字、空格等)导致图片加载失败

密码中有特殊的字符IOS如何处理 IOS中URL包含中文参数的问题

iOS Json解析中特殊字符串('\\')处理

iOS特殊字符的转义字符