2012-09-24 211 views
4

在我的应用程序,当我试图设置附加的字符串到UIlabel特殊字符不显示。请帮我解决这个问题。ios特殊字符问题

感谢

Result

Special Character

回答

0

使用NSISOLatinStringEncoding解决了这个问题。

0

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

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

[编辑]

我试用了一下没有将字符串转换为UTF-8工作正常!

label.text = @"¿euro¿"; 

Check this output

请确保您的服务器的响应设置为UTF-8,它应该修复它。我遇到了同样的问题,我从UTF8获取字符串 - NSUTF8StringEncoding!我改变了它,一切工作正常!

例如我不喜欢它:

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

这两种方法都不起作用。 'dataUsingEncoding:'返回一个'NSData *','UTF8String'返回一个'const char *'。但'[UILabel setText:]'需要'NSString *'参数。 –

+0

@Martin我一直在使用这个,但不是直接在字符串上,但从服务器返回的字符串,它工作正常。确保您将服务器响应类型设置为NSUTF8StringEncoding。理想情况下,当您打印NSLog时,它可能会打印无效字符,但是如果将其分配给标签,则会正确显示它。 – applefreak

+0

我的观点是你不能使用'dataUsingEncoding'和'UTF8String'的结果作为'[UILabel setText:]'的参数。您编写的语句会导致编译器警告有关不兼容的类型,并在运行时崩溃。 –

0
//Conevrt the string utf-8 format 

[yourstringvariabel UTF8String]; 
1

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

[lLabel setText:@"€"]; 

否则使用Unicode转义:

[lLabel setText:@"\u20AC"]; 

ADDED Foundation框架和NSString类不知道逃脱像“¿euro¿”序列,所以你必须手动替换:

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

像欧元这样的特殊符号,倒转的问号来自web服务,因为我使用了utf8字符串编码。所以当我试图显示它们时,这些字符不显示,所以在这种情况下我不能硬编码这些值,因为这些值是动态的。对于上述情况倒置问号没有得到显示我已使用以下链接,但这是行不通的http://www.iphonedevsdk.com/forum/iphone-sdk-development/32878-displaying-special-characters-with-适当-encoding.html。你能告诉我如何解决这个问题 –

+0

@Saikiran:看到我更新的答案。您还应该确保来自Web服务的字符串确实使用了“反转问号”字符(Unicode U + 00BF),而不是其他显示为倒置问号的其他字符。 –

+0

:我很惊讶地看到,在数据库中,我设置了欧元符号作为自定义名称,但在Web服务响应中,我收到倒置问号而不是欧元符号,我无法用unicode字符替换此倒置问号你提到 –