swift - 什么是 String.Encoding.unicode?

标签 swift string unicode encoding swift-string

Swift 提供了一系列字符串编码。在我写这篇文章的时候,none of them are documented ,这使得这比它应该的更加困惑......

我可以理解 .ascii表示它是 ASCII编码,.utf8表示字符串是 UTF-8编码,和.utf16BigEndian表示字符串是 UTF-16但是big-endian .这些显然映射到真实的文本编码。

然后是.unicode .没有“Unicode”编码。 The Unicode standard defines UTF-8, UTF-16, and UTF-32 ,正如我上面所说,已经在 Swift 中定义了。

它是一种计算出最适合系统的方法吗?它是 .utf8 的别名吗?是不是有些奇怪的 Apple Unicode 编码?

最佳答案

它似乎是 .utf16 的别名。来自 CFString.h:

#define kCFStringEncodingInvalidId (0xffffffffU)
typedef CF_ENUM(CFStringEncoding, CFStringBuiltInEncodings) {
    kCFStringEncodingMacRoman = 0,
    kCFStringEncodingWindowsLatin1 = 0x0500, /* ANSI codepage 1252 */
    kCFStringEncodingISOLatin1 = 0x0201, /* ISO 8859-1 */
    kCFStringEncodingNextStepLatin = 0x0B01, /* NextStep encoding*/
    kCFStringEncodingASCII = 0x0600, /* 0..127 (in creating CFString, values greater than 0x7F are treated as corresponding Unicode value) */
    kCFStringEncodingUnicode = 0x0100, /* kTextEncodingUnicodeDefault  + kTextEncodingDefaultFormat (aka kUnicode16BitFormat) */
    kCFStringEncodingUTF8 = 0x08000100, /* kTextEncodingUnicodeDefault + kUnicodeUTF8Format */
    kCFStringEncodingNonLossyASCII = 0x0BFF, /* 7bit Unicode variants used by Cocoa & Java */

    kCFStringEncodingUTF16 = 0x0100, /* kTextEncodingUnicodeDefault + kUnicodeUTF16Format (alias of kCFStringEncodingUnicode) */
    kCFStringEncodingUTF16BE = 0x10000100, /* kTextEncodingUnicodeDefault + kUnicodeUTF16BEFormat */
    kCFStringEncodingUTF16LE = 0x14000100, /* kTextEncodingUnicodeDefault + kUnicodeUTF16LEFormat */

    kCFStringEncodingUTF32 = 0x0c000100, /* kTextEncodingUnicodeDefault + kUnicodeUTF32Format */
    kCFStringEncodingUTF32BE = 0x18000100, /* kTextEncodingUnicodeDefault + kUnicodeUTF32BEFormat */
    kCFStringEncodingUTF32LE = 0x1c000100 /* kTextEncodingUnicodeDefault + kUnicodeUTF32LEFormat */
};

您可以通过以下方式确认:

print(String.Encoding.unicode.rawValue, String.Encoding.utf16.rawValue)

关于swift - 什么是 String.Encoding.unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58295351/

相关文章:

ios - 使用 CGPoint 坐标系绘制矩形 - SWIFT

ios - 类似于 Whatsapp 的已读状态的双复选标记

java - 字符串的链接列表

java - Spring @RestController 无法返回 unicode

ios - iCarousel 获取用户点击索引

ios - Swift - 如何获取字典的最后一个键

string - 德尔福2010 : how do I convert a UTF8-encoded PAnsiChar to a UnicodeString?

java - 无法从 String[] 转换为 String

scala - 如何减少 ScalaCheck 生成的测试用例的数量?

c++ - 使用多字节字符集的 MFC 应用程序中的 UTF-8 文本