diff --git a/pymysqlreplication/binlogstream.py b/pymysqlreplication/binlogstream.py index d9c74da4..e5964a01 100644 --- a/pymysqlreplication/binlogstream.py +++ b/pymysqlreplication/binlogstream.py @@ -53,7 +53,8 @@ def __init__(self, connection_settings, server_id, resume_stream=False, freeze_schema: If true do not support ALTER TABLE. It's faster. """ self.__connection_settings = connection_settings - self.__connection_settings["charset"] = "utf8" + if not connection_settings.get("charset"): + self.__connection_settings["charset"] = "utf8" self.__connected_stream = False self.__connected_ctl = False diff --git a/pymysqlreplication/row_event.py b/pymysqlreplication/row_event.py index e52afaf9..be82ea6f 100644 --- a/pymysqlreplication/row_event.py +++ b/pymysqlreplication/row_event.py @@ -191,7 +191,9 @@ def __add_fsp_to_time(self, time, column): def __read_string(self, size, column): string = self.packet.read_length_coded_pascal_string(size) if column.character_set_name is not None: - string = string.decode(column.character_set_name) + character_set_name = "utf8" if column.character_set_name == "utf8mb4" \ + else column.character_set_name + string = string.decode(character_set_name) return string def __read_bit(self, column):