web-dev-qa-db-ja.com

iOSSDKでNSStringをUTF-8フォーマットの文字列に変換する方法は?

アプリにローカリゼーションがあります(英語、スペイン語、イタリア語)。クライアントから文字列ファイルが送信されましたが、一部の文字がおかしいのですが、どうすれば修正できますか?クライアントがMacOS Romanエンコーディングを使用していることを理解しました。これをutf-8に変換するにはどうすればよいですか?たとえば、クライアントから送られてきたニュルンベルクは、ニュルンベルクに変換されます。再変換したいのですが。

10
Rahul Vyas

すべての文字列を含むプロパティファイルがある場合...それらをロードして、これらのいずれかで読み取ることができます( NSStringのドキュメント から):

– initWithBytes:length:encoding:
– initWithBytesNoCopy:length:encoding:freeWhenDone:
– initWithCString:encoding:
– initWithUTF8String:

可能なすべてのエンコーディングのリストは次のとおりです

enum {
   NSASCIIStringEncoding = 1,
   NSNEXTSTEPStringEncoding = 2,
   NSJapaneseEUCStringEncoding = 3,
   NSUTF8StringEncoding = 4,                   <----- UTF8!
   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
};
12
Malaxeur

簡単な方法

   [yourNSStringObject UTF8String];