Swift中String.Encoding的.unicode是什么?与.utf16有何区别?
String.Encoding.unicode 详解
1. 本质是UTF-16的别名
String.Encoding.unicode并非通用的Unicode编码容器,它就是适配平台原生字节序的UTF-16编码的别名。比如在苹果的macOS、iOS设备上,它等价于utf16LittleEndian;若在大端序平台,则对应utf16BigEndian,核心还是UTF-16的实现。
2. 核心用途
它的存在主要是为了兼容Objective-C时代的API。早年OC的NSStringEncoding中存在NSUnicodeStringEncoding类型,Swift为了让迁移过来的老代码无需大规模修改编码参数,特意保留了这个别名,方便项目平滑过渡。
3. 绝非通用Unicode编码值
别被名字误导,它完全不能代表“任意Unicode编码”。如果需要指定UTF-8、UTF-32这类编码,必须明确使用utf8、utf32这类具体枚举值,unicode仅对应UTF-16系列编码。
内容的提问来源于stack exchange,提问作者Isaaс Weisberg
相关产品推荐
相关产品推荐

