2013-06-03 34 views
0

我解析其中包含UTF8 NO-BREAK SPACE(C2A0)某些UTF8文本而不是常規空格字符,這是造成用的NSXMLParser問題。因此,例如「我是一個字符串」包含3個常規空格字符將作爲一個整體字符串傳遞給解析器:(NSXMLParser *)解析器foundCharacters:(NSString *)字符串。 (NSXMLParser *)解析器foundCharacters:(NSString *)帶有4個子字符串的字符串。這個字符串包含4個子字符串。(NSString *)字符串包含4個子字符串。UTF8 NO-BREAK SPACE造成問題的NSXMLParser

我只是想提取「我是一個字符串」,有製作,如果遇到這些UTF8字符NSURLConnection的未分解成子任何巧妙的解決辦法?

我沒有在輸入控件 - 它來自服務器的UTF8編碼XML通過HTTP。

+0

這是HTML或XML?周圍是什麼文字?標籤?引號?你有在文件中定義的DTD嗎? –

+0

它的XML與被標記包圍的文本。 – Gruntcakes

+0

DTD在頂部?喜歡的東西: –

回答

0

尋找一些從未使用Unicode字符 - 一些象徵 - 並使用NSString的空格字符更改爲別的東西,然後提取你想要什麼,以及做琴絃反向編碼。

編輯:因此,可以說你的網頁作爲一個NSData對象:

NSString *str = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding]; 
NSString *nStr = [str stringByReplacingOccurrencesOfString:@"\uC2A0" withString:@"\u2208"]; 
NSData *nData = [[nStr ]dataUsingEncoding:NSUTF8StringEncoding]; 
// do your parsing 
// for each parsed string 
NSString *nStr = [str stringByReplacingOccurrencesOfString:@"\u2208" withString: @"\uC2A0"]; 

這將在年底得到您確切的輸入字符串。但是,也許你只是想忘掉那些Unicode的空間,只是把它們變成現實空間:

NSString *nStr = [str stringByReplacingOccurrencesOfString:@"\u2208" withString: @" "]; 
NSString *str = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding]; 
NSString *nStr = [str stringByReplacingOccurrencesOfString:@"\uC2A0" withString:@"\u2208"]; 
NSData *nData = [[nStr ]dataUsingEncoding:NSUTF8StringEncoding]; 

你甚至可以找雙空間,並與一個單一的一個替換它們。

+0

我不明白你的意思,改變空格字符在哪裏?我無法控制輸入,它來自服務器。 – Gruntcakes