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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1860277/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-03 22:35:51  来源:igfitidea点击:

How to convert a NSString to UTF-8 format string in iphone sdk?

objective-cxcodeiphone-sdk-3.0utf-8nsstring

提问by Rahul Vyas

I have localization in my app(english,spanish,italian).The client sent me strings files but some characters are strange how do i correct them? i have figured out that the client used Mac OS Roman encoding how do i convert this to utf-8. for example Nürnberg is converted into N√ornberg when client send me now i want to reconvert it.

我在我的应用程序中进行了本地化(英语、西班牙语、意大利语)。客户端向我发送了字符串文件,但有些字符很奇怪,我该如何更正它们?我发现客户端使用了 Mac OS Roman 编码,我该如何将其转换为 utf-8。例如,当客户发送给我时,Nürnberg 被转换为 N√ornberg,现在我想重新转换它。

回答by Vijay-Apple-Dev.blogspot.com

simple method

简单的方法

   [yourNSStringObject UTF8String];

回答by Malaxeur

If you have a properties file with all of the strings... you can load them in and read them with any of these (from NSString's Documentation):

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

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

Here's the list of all possible encodings

这是所有可能的编码列表

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
};