2012-11-22 96 views
1

我在使用json解析時遇到了令人困惑的情況。JSON字符串編碼 - 混亂

的情景是,

步驟1:我有兩個鏈接

 1. http://www.xyz.com/json/getpidl.asp?id=5527446 
    2. http://www.xyz.com/json/getpidl.acp?id=5587963 
    ****BOTH LINKS ARE WORKING** ** 

步驟2:現在正嘗試編碼來自這兩個環節(逐個)用下面的代碼JSON字符串

NSMutableString *responseString = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    NSError *error; 
SBJSON *parserObject = [[SBJSON alloc] init]; 

步驟3:一個)鏈接1 - 響應串具有JSON字符串 b)鏈路2 - 響應字符串是空的

第4步:所以,我已經改變了這樣的代碼下面,

NSMutableString *responseString = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 


    if (!(responseString)) 
    { 
    responseString = [[NSMutableString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; 
    } 
    NSError *error; 
SBJSON *parserObject = [[SBJSON alloc] init]; 

第5步:現在問題已經解決了。但是我無法理解這裏的問題。任何人都可以幫我理解這種情況

回答

2

目前還不清楚這是如何與JSON相關的。您的代碼片段創建SBJSON解析器對象,但從不使用它們。

這也很難找出爲什麼initWithData調用失敗,沒有看到數據是什麼樣子。我的猜測是數據中包含的字節序列不是有效的UTF8,因此解碼爲UTF8失敗,但是由於「壞」字符僅作爲未知單字節字符處理,因此按ASCII解碼。

+0

>非常感謝您的回覆。其實「響應數據」來自json。我發現響應數據是「十六進制代碼」。我只是想知道,在這裏使用「utf」和「ascii」編碼。對不明的片斷 –