1

Code

NSString* strFromWeb = [NSString stringWithContentsOfURL:url usedEncoding:&enc error:&error];
NSLog(@"%d", enc);

this print 4, because

NSUTF8StringEncoding  = 4,

Is there some build-in function that will print NSUTF8StringEncoding or something like that ?

WebOrCode
  • 6,852
  • 9
  • 43
  • 70

4 Answers4

3

You can convert the NSStringEncoding to a CFStringEncoding and then get the name from that:

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
}
rmaddy
  • 314,917
  • 42
  • 532
  • 579
1

There is no way to directly get the enum name as a string from it's value.

For the string encodings you can go down to the Core Foundation layer, which has CFStringGetNameOfEncoding which takes an CFStringEncoding which is not the same as a NSStringEncoding. But using CFStringConvertNSStringEncodingToEncoding you can convert your encoding value. This doesn't have names for all encodings though.

Sven
  • 22,475
  • 4
  • 52
  • 71
1

This may be of interest:

NSStringEncoding encoding;
NSString* strFromWeb = [NSString stringWithContentsOfURL:url usedEncoding:&encoding error:&error];
NSLog(@"%d", encoding);

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

Source: NSUTF8StringEncoding returns nil NSString

Community
  • 1
  • 1
carlodurso
  • 2,886
  • 4
  • 24
  • 37
0

This is an old question, but here's another answer in case someone else stumbles across this:

NSString has a method +localizedNameOfStringEncoding:.

e.g.,

NSString *encodingName = [NSString localizedNameOfStringEncoding:NSUTF8StringEncoding];
Wevah
  • 28,182
  • 7
  • 83
  • 72