如何在iphone sdk中将NSString转换为UTF-8格式字符串?

Rah*_*yas 10 xcode objective-c utf-8 nsstring iphone-sdk-3.0

我在我的应用程序中有本地化(英语,西班牙语,意大利语).客户端发给我字符串文件,但有些字符很奇怪我如何纠正它们?我已经发现客户端使用Mac OS罗马编码如何将其转换为utf-8.例如纽伦堡被转换为N√ºrnberg,当客户现在发送给我时我想要重新转换它.

Vij*_*com 19

简单的方法

   [yourNSStringObject UTF8String];
Run Code Online (Sandbox Code Playgroud)


Mal*_*eur 12

如果你有一个包含所有字符串的属性文件......你可以加载它们并用它们中的任何一个读取它们(来自NSString的文档):

– initWithBytes:length:encoding:
– initWithBytesNoCopy:length:encoding:freeWhenDone:
– initWithCString:encoding:
– initWithUTF8String:
Run Code Online (Sandbox Code Playgroud)

这是所有可能编码的列表

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
};
Run Code Online (Sandbox Code Playgroud)