Быстрая длина байт для смайликов - PullRequest
1 голос
/ 10 мая 2019

Следующий код:

func printLengthOf(_ str: String) {
    print("String: \(str)")
    print("UTF8: \(str.lengthOfBytes(using: .utf8))")
    print("UTF16: \(str.lengthOfBytes(using: .utf16))")
}

let emoji1 = "?"
let emoji2 = "??"

printLengthOf(emoji1)
printLengthOf(emoji2)

Показывает:

String: ?
UTF8: 4
UTF16: 4
String: ??
UTF8: 8
UTF16: 8

Однако Android считает те же эмодзи как 2 байта, я думал, что количество байтов для одного и того же смайлика не должнобыть зависимым от платформы.Что-то я не так сделал?

Спасибо!

Обновление:

Android использует следующий код для вычисления длины:

*byteLength = myString.getBytes("UTF-8").length;*
...