簡體   English   中英

什么是 String.Encoding.unicode?

[英]What is String.Encoding.unicode?

Swift 為字符串提供了一系列編碼。 截至我寫這篇文章的時候,它們都沒有被記錄在案,這使得這比它應該的更令人困惑......

我可以理解.ascii表示它是ASCII編碼的, .utf8表示字符串是UTF-8編碼的, .utf16BigEndian表示字符串是UTF-16big-endian 這些顯然是 map 到真正的文本編碼。

然后是.unicode 沒有“Unicode”編碼。 Unicode 標准定義了 UTF-8、UTF-16 和 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM