diff --git a/lib/src/messages/publish/mqtt_client_mqtt_publish_payload.dart b/lib/src/messages/publish/mqtt_client_mqtt_publish_payload.dart index 4517f16..50f3889 100644 --- a/lib/src/messages/publish/mqtt_client_mqtt_publish_payload.dart +++ b/lib/src/messages/publish/mqtt_client_mqtt_publish_payload.dart @@ -67,8 +67,6 @@ class MqttPublishPayload extends MqttPayload { /// Converts an array of bytes to a character string. static String bytesToStringAsString(typed.Uint8Buffer message) { - final sb = StringBuffer(); - message.forEach(sb.writeCharCode); - return sb.toString(); + return utf8.decode(message.toList()); } } diff --git a/test/mqtt_client_base_test.dart b/test/mqtt_client_base_test.dart index 44fd133..42319e1 100644 --- a/test/mqtt_client_base_test.dart +++ b/test/mqtt_client_base_test.dart @@ -997,4 +997,22 @@ void main() { isTrue); }); }); + group('Conversions', () { + group('Bytes To String as String', () { + test('String 1', () { + final original = 'Hello, 世界!'; + final buffer = typed.Uint8Buffer(); + buffer.addAll(utf8.encode(original)); // Encode the string to bytes + final decoded = MqttPublishPayload.bytesToStringAsString(buffer); + expect(decoded == original, isTrue); + }); + test('String 2', () { + final original = 'Seu próximo agendamento iniciará em 5 minutos.'; + final buffer = typed.Uint8Buffer(); + buffer.addAll(utf8.encode(original)); // Encode the string to bytes + final decoded = MqttPublishPayload.bytesToStringAsString(buffer); + expect(decoded == original, isTrue); + }); + }); + }); }