我正在尝试以 JSON 格式从特定蓝牙设备获取数据。据我了解,didUpdateValueFor CBCharacteristic 委托中的 CoreBluetooth 发送 20 字节消息,您可以使用它。问题是如果这个 20 字节的消息有西里尔符号,didUpdateValueFor CBCharacteristic 委托不会向我发送这 20 个字节,最后我没有有效的 JSON。例子:
{"Rows":[
{"num":0,"id":1,"pid":0,"type":0,"name":"Папка1"},
{"num":1,"id":2,"pid":0,"type":0,"name":"Group2"},
{"num":2,"id":4,"pid":1,,"id":5,"pid":2,"type":1,"name":"Group2запись"}
]}
如您所见,在这个 json 中,{"num":2,"id":4,"pid":1,
我使用 Cyrillic 有 20 个字节。
设备以 UTF8 格式发送数据
我将此数据转换为字符串,如下所示
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
let readValue = myCharacteristic.value ?? Data()
jsonString1 = String(data: readValue, encoding: String.Encoding.utf8) ?? ""
massageFromDevice = massageFromDevice + jsonString1
我该如何解决?