繁体   English   中英

NSStringEncoding到字符串

[英]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接受的CFStringEncodingNSStringEncoding 但是,使用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;

来源: NSUTF8StringEncoding返回nil NSString

这是一个古老的问题,但是如果有人偶然发现,这是另一个答案:

NSString具有+localizedNameOfStringEncoding:方法。

例如,

NSString *encodingName = [NSString localizedNameOfStringEncoding:NSUTF8StringEncoding];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM