diff --git a/sentry_sdk/utils.py b/sentry_sdk/utils.py index fe469d58ed..a0a0ba3bd7 100644 --- a/sentry_sdk/utils.py +++ b/sentry_sdk/utils.py @@ -604,6 +604,8 @@ def convert_types(obj): return [convert_types(v) for v in obj] if not isinstance(obj, string_types + number_types): return safe_repr(obj) + if isinstance(obj, bytes): + return obj.decode("utf-8", "replace") return obj diff --git a/tests/test_client.py b/tests/test_client.py index 78d201ffc0..31bdf584d6 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,4 +1,5 @@ # coding: utf-8 +import json import logging import pytest import subprocess @@ -281,3 +282,11 @@ def test_scope_initialized_before_client(sentry_init, capture_events): event, = events assert "tags" not in event + + +def test_weird_chars(sentry_init, capture_events): + sentry_init() + events = capture_events() + capture_message(u"föö".encode("latin1")) + event, = events + assert json.loads(json.dumps(event)) == event