代码之家  ›  专栏  ›  技术社区  ›  d11wtq Vadim Baryshev

将字符集名称转换为nsstringencoding

  •  12
  • d11wtq Vadim Baryshev  · 技术社区  · 16 年前

    给定一个字符集字符串,如“utf-8”、“iso-8859-1”、“us-ascii”等,是否有任何内置的方法可以在cocoa中获得适当的nsstring编码?

    现在,我只想构建一个nsDictionary,其中包含映射到nsStringEncoding的名称的规范化版本,然后有一个查找机制,以相同的方式规范输入。但考虑到字符串“utf-8”等,真的没有办法得到nsutf8stringEncoding吗?

    3 回复  |  直到 11 年前
        1
  •  22
  •   BadPirate    11 年前

    你必须通过核心基金会。

    CFStringConvertIANACharSetNameToEncoding
    CFStringConvertEncodingToNSStringEncoding
    

    首先将IANA字符集转换为cfStringEncoding值(与nsStringEncoding不同),然后将cfStringEncoding转换为nsStringEncoding。

    NSString *encodingString = @"utf-8"
    NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef) encodingString));
    
        2
  •  2
  •   Yong    13 年前
    NSStringEncoding utfEncoding = NSUTF8StringEncoding;
    NSLog(@"%lu",utfEncoding);
    
    NSString * utf8Name = @"UTF-8";
    CFStringEncoding aEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)utf8Name);
    utfEncoding = CFStringConvertEncodingToNSStringEncoding(aEncoding);
    NSLog(@"%lu",utfEncoding);  
    
        3
  •  1
  •   pheelicks    16 年前

    我认为实现这一目标没有任何内在的方法。我认为你的建议——用价值观建立一本字典——是一个明智的方法。没有那么多的编码,所以它应该是非常琐碎的,可能比试图找到一种内置的方式做它更快。