2014-02-25 46 views
0

正確顯示西班牙文本,我在把西班牙文本是從服務中獲取編碼ISO 8859-1在UITableView的

正確的格式面臨的問題。服務器端他們編碼爲ISO-8859-1。這是一個XML服務。在我的

iOS7應用程序中,我使用了TBXml解析器來解析數據。該代碼是:

NSString *XMLString = [[NSString alloc] initWithContentsOfURL:urlString encoding:NSISOLatin1StringEncoding error:nil]; 

TBXML *tbxml = [[TBXML alloc] initWithXMLString:XMLString]; 

我解析這些數據,但是當有像 「BEBESŸ」 西班牙字符我

字符串將是 「BEB ... S y時」。和「øPorquÈalbergamos alborotadores?」而不是「」Porqué albergamos a alborotadores?「。請幫助

+0

你的代碼看起來很好。你確定它實際上是ISO-8859-1編碼嗎?你可以切換到'[NSString -initWithContentsOfFile:usedEncoding:error:]'方法來嘗試自動檢測編碼(它會向你報告它使用了什麼)。 –

+0

@AaronBrager最好是下載二進制和讓XML解析器決定編碼。 – Sulthan

回答

1

你應該下載的XML數據爲二進制(NSData)並讓解析器處理編碼。

NSData *data = [NSData dataWithContentsOfURL:url]; 

NSError *error; 
TBXML *tbxml = [TBXML tbxmlWithXMLData:data error:&error]; 

請注意,XML應該將內容編碼作爲第一行,因此不需要在代碼中指定編碼。

+0

謝謝。我用「NSUTF8StringEncoding」編碼的TBXml解析器應該替換爲「NSISOLatin1StringEncoding」? –

0

與NSUTF8StringEncoding嘗試

NSString *XMLString = [[NSString alloc] initWithContentsOfURL:urlString encoding:NSUTF8StringEncoding error:nil]; 

TBXML *tbxml = [[TBXML alloc] initWithXMLString:XMLString]; 

UPDATE:

NSData *dataContent = [[NSData dataWithContentsOfURL:urlString]; 
NSString *XMLString = [[NSString alloc] initWithData:dataContent encoding:NSISOLatin1StringEncoding]; 

TBXML *tbxml = [[TBXML alloc] initWithXMLString:XMLString]; 

更新2:用數據初始化嘗試

NSData *dataContent = [[NSData dataWithContentsOfURL:urlString]; 

TBXML *tbxml = [[TBXML alloc] initWithXMLData:XMLString]; 
+0

我用過那個,但是這次數據本身是空的 –

+0

查看我的更新 –

+0

也是這樣算出來的朋友。但沒用的 –