Следующий код:
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;*