Emojis are replaced by '?' when saved to the db and I cannot find where it does come from.
I get "aa" transformed to "a?a", either via django admin or directly through my code
Any idea to fix this problem?
My configuration:
settings.py:
DATABASES = {
    'default': {
        ...
        'OPTIONS': {
            'init_command': "SET NAMES utf8mb4; SET CHARACTER SET utf8mb4; SET character_set_connection=utf8mb4; SET collation_connection = 'utf8_unicode_ci';",
            'charset': 'utf8mb4',
        },
    }
}
my mysql configuration:
[mysqld]
character-set-server  = utf8mb4
collation-server      = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
charset in db:
MariaDB [dbn]> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_general_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+
the table containing the field:
SHOW TABLE STATUS where name="xxx" => "utf8mb4_unicode_ci" for that table
the field receiving the emoji string:
MariaDB [dbn]> SELECT  column_name, character_set_name, collation_name FROM information_schema.columns where TABLE_NAME='xxx';
+-----------------+--------------------+--------------------+
| column_name     | character_set_name | collation_name     |
+-----------------+--------------------+--------------------+
| my_text_field   | utf8mb4            | utf8mb4_unicode_ci |
Thanks for reading
EDIT :
 dpkg -l | grep mysql
ii  default-libmysqlclient-dev:amd64 1.0.5                             amd64        MySQL     database development files (metapackage)
ii  default-mysql-client             1.0.5                             all          MySQL database client binaries (metapackage)
ii  default-mysql-server             1.0.5                             all          MySQL database server binaries and system database setup (metapackage)
ii  mysql-common                     5.8+1.0.5                         all          MySQL database common files, e.g. /etc/mysql/my.cnf
db_shell:
Server version: 10.3.27-MariaDB-0+deb10u1 Debian 10
python 3.9 django 3.1.7
ii  libmariadb-dev                   1:10.3.27-0+deb10u1               amd64        MariaDB database development files
ii  libmariadb-dev-compat:amd64      1:10.3.27-0+deb10u1               amd64        MariaDB Connector/C, compatibility symlinks
ii  libmariadb3:amd64                1:10.3.27-0+deb10u1               amd64        MariaDB database client library
ii  mariadb-client-10.3              1:10.3.27-0+deb10u1               amd64        MariaDB database client binaries
ii  mariadb-client-core-10.3         1:10.3.27-0+deb10u1               amd64        MariaDB database core client binaries
ii  mariadb-common                   1:10.3.27-0+deb10u1               all          MariaDB common metapackage
ii  mariadb-server-10.3              1:10.3.27-0+deb10u1               amd64        MariaDB database server binaries
ii  mariadb-server-core-10.3         1:10.3.27-0+deb10u1               amd64        MariaDB database core server files
 
    