1. ホーム
  2. iphone

[解決済み] Objective cでNSDataをNSStringに変換する。

2023-03-15 06:15:21

質問

NSDataをNSStringに変換したいのですが、どのような方法がありますか?

私はこのコードを使用していますが、最終的な文字列はNULLを返します。

NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);

コンソールを見るとNULLと表示されます。

どのように解決するのですか?

のドキュメントは NSString

https://developer.apple.com/documentation/foundation/nsstring/1416374-initwithdata

<ブロッククオート

戻り値 NSStringオブジェクト のバイトをユニコード文字に変換して初期化された をUnicode文字に変換して初期化したNSStringオブジェクト。 に変換して初期化したNSStringオブジェクト。返されるオブジェクトは、元の受信機と異なる場合があります。 元の受信機とは異なる場合があります。 何らかの理由で初期化に失敗した場合、nil を返します。 何らかの理由で初期化に失敗した場合(例えば の有効なデータでない場合など)、nil を返す。 を返す。)

他のエンコードを試してみて、問題が解決するかどうか確認する必要があります。

 // The following constants are provided by NSString as possible string encodings.
enum {
   NSASCIIStringEncoding = 1,
   NSNEXTSTEPStringEncoding = 2,
   NSJapaneseEUCStringEncoding = 3,
   NSUTF8StringEncoding = 4,
   NSISOLatin1StringEncoding = 5,
   NSSymbolStringEncoding = 6,
   NSNonLossyASCIIStringEncoding = 7,
   NSShiftJISStringEncoding = 8,
   NSISOLatin2StringEncoding = 9,
   NSUnicodeStringEncoding = 10,
   NSWindowsCP1251StringEncoding = 11,
   NSWindowsCP1252StringEncoding = 12,
   NSWindowsCP1253StringEncoding = 13,
   NSWindowsCP1254StringEncoding = 14,
   NSWindowsCP1250StringEncoding = 15,
   NSISO2022JPStringEncoding = 21,
   NSMacOSRomanStringEncoding = 30,
   NSUTF16StringEncoding = NSUnicodeStringEncoding,
   NSUTF16BigEndianStringEncoding = 0x90000100,
   NSUTF16LittleEndianStringEncoding = 0x94000100,
   NSUTF32StringEncoding = 0x8c000100,
   NSUTF32BigEndianStringEncoding = 0x98000100,
   NSUTF32LittleEndianStringEncoding = 0x9c000100,
   NSProprietaryStringEncoding = 65536
};