2012-09-24 260 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字符替換此倒置問號你提到 –