![](/img/trans.png)
[英]String.Encoding is not getting translated to NSStringEncoding in swift 3 to objective C conversion
[英]NSStringEncoding to string
码
NSString* strFromWeb = [NSString stringWithContentsOfURL:url usedEncoding:&enc error:&error];
NSLog(@"%d", enc);
此打印4,因为
NSUTF8StringEncoding = 4,
是否有一些内置函数可以打印NSUTF8StringEncoding或类似的东西?
您可以将NSStringEncoding
转换为CFStringEncoding
,然后从中获取名称:
NSStringEncoding enc;
NSString* strFromWeb = [NSString stringWithContentsOfURL:url usedEncoding:&enc error:&error];
if (strFromWeb) {
CFStringEncoding cfEnc = CFStringConvertNSStringEncodingToEncoding(enc);
NSString *name = (NSString *)CFStringGetNameOfEncoding(cfEnc);
NSLog(@"Encoding = %@", name);
} else {
// log error
}
没有办法直接从值中获取枚举名称作为字符串。
对于字符串编码,您可以转到Core Foundation层,该层具有CFStringGetNameOfEncoding
,而CFStringGetNameOfEncoding
接受的CFStringEncoding
与NSStringEncoding
。 但是,使用CFStringConvertNSStringEncodingToEncoding
可以转换编码值。 尽管它没有所有编码的名称。
这可能很有趣:
NSStringEncoding encoding;
NSString* strFromWeb = [NSString stringWithContentsOfURL:url usedEncoding:&encoding error:&error];
NSLog(@"%d", encoding);
可用编码:
*/
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;
这是一个古老的问题,但是如果有人偶然发现,这是另一个答案:
NSString具有+localizedNameOfStringEncoding:
方法。
例如,
NSString *encodingName = [NSString localizedNameOfStringEncoding:NSUTF8StringEncoding];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.