2012-03-14 15 views
4

最新のSDKとXCode 4.2でiOs 4アプリケーションを開発しています。NSUTF8StringEncodingはnil NSStringを返します

ウェブサービスを使用してデータを取得していますが、そのデータを受信して​​います。私はこれを行うときには、

NSString *json_string = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]; 

receivedDataは944bytesを持っていますが、json_stringはnilです。 Webサービスから

私は(コピー&は、ブラウザのウィンドウから貼り付け)この文字列を取得しています:

{"posts": [ { "ID": "324","fecha": "10/02/2012","titulo": "Preparada para la lluvia","texto": "¡Al mal tiempo buena cara! Eso pensé al vestirme el otro día que hiz...","foto": "2012/02/image20.jpg" } ] } 

私はhttp://jsonformatter.curiousconcept.com/、ここでJSONを検証しようとしましたが、私はそれが無効になってしまいます。

{ 
    "posts":[ 
     { 
     "ID":"324", 
     "fecha":"10/02/2012", 
     "titulo":"Preparada para la lluvia", 
     "texto":, 
     "foto":"2012/02/image20.jpg" 
     } 
    ] 
} 

そして、このエラー:私は、この形式の出力を表示

Error:Strings should be wrapped in double quotes.[Code 17, Structure 20] 
Error:Invalid characters found.[Code 18, Structure 20] 

何が起こっているかについての任意の手掛かり?

+0

は角括弧を削除する( '[]')、および/または追加してみていることを確認し、あなたが有効なUTF8のデータを持っていることを確認してください'texto'(' 'texto": ""、 ')の後の空の文字列 – Novarg

答えて

8

あなたが利用可能なエンコーディング

NSStringEncoding encoding; 
    NSString *pageData = [NSString stringWithContentsOfURL:url usedEncoding:&encoding error:NULL]; 
    NSLog(@"Encoding %d",encoding);(Note: NSUTF8StringEncoding = 4) 

、などの機能を使用して、

*/ 
enum { 
    NSASCIIStringEncoding = 1,  /* 0..127 only */ 
    NSNEXTSTEPStringEncoding = 2, 
    NSJapaneseEUCStringEncoding = 3, 
    NSUTF8StringEncoding = 4, 
    NSISOLatin1StringEncoding = 5, 
    NSSymbolStringEncoding = 6, 
    NSNonLossyASCIIStringEncoding = 7, 
    NSShiftJISStringEncoding = 8,   /* kCFStringEncodingDOSJapanese */ 
    NSISOLatin2StringEncoding = 9, 
    NSUnicodeStringEncoding = 10, 
    NSWindowsCP1251StringEncoding = 11, /* Cyrillic; same as AdobeStandardCyrillic */ 
    NSWindowsCP1252StringEncoding = 12, /* WinLatin1 */ 
    NSWindowsCP1253StringEncoding = 13, /* Greek */ 
    NSWindowsCP1254StringEncoding = 14, /* Turkish */ 
    NSWindowsCP1250StringEncoding = 15, /* WinLatin2 */ 
    NSISO2022JPStringEncoding = 21,  /* ISO 2022 Japanese encoding for e-mail */ 
    NSMacOSRomanStringEncoding = 30, 

    NSUTF16StringEncoding = NSUnicodeStringEncoding,  /* An alias for NSUnicodeStringEncoding */ 

    NSUTF16BigEndianStringEncoding = 0x90000100,   /* NSUTF16StringEncoding encoding with explicit endianness specified */ 
    NSUTF16LittleEndianStringEncoding = 0x94000100,  /* NSUTF16StringEncoding encoding with explicit endianness specified */ 

    NSUTF32StringEncoding = 0x8c000100,     
    NSUTF32BigEndianStringEncoding = 0x98000100,   /* NSUTF32StringEncoding encoding with explicit endianness specified */ 
    NSUTF32LittleEndianStringEncoding = 0x9c000100  /* NSUTF32StringEncoding encoding with explicit endianness specified */ 
}; 
typedef NSUInteger NSStringEncoding; 
+0

私はあなたのコードをテストしました:**エンコーディング22486157 ** – VansFannel

+0

それはあなたがゼロ値を得る理由です。ヘッダーでサポートされているすべてのエンコードタイプを確認できます。 – Vignesh

+0

しかし、どのようにして本名を取得できますか?私はその名前を知る必要があります。 – VansFannel

1

あなたの問題は、有効なUTF-8テキストを返さないWebサービスだと思います。サーバー側でエンコードをチェックする必要があります。

関連する問題