10

I am trying to insert emoji's into a certain filed in my mysql table. I ran alter command and changed the collation to "utf8mb4_general_ci"

  ALTER TABLE XYZ MODIFY description VARCHAR(250) CHARACTER SET utf8mb4
  COLLATE utf8mb4_general_ci;

Table details after above query:

+-------------+--------------+---------------+--------------------+
| Column      | Type         | Character Set | Collation          |
+-------------+--------------+---------------+--------------------+
| description | varchar(250) | utf8mb4       | utf8mb4_general_ci |
+-------------+--------------+---------------+--------------------+

After this I ran the query to update description column with emoji's, every time I ran below query, the emoji is replaced by '?'.

  update XYZ set description='a test with : ' where id = 1;

But when i print the result from a select query for the same id, it displays' '?' in place of emoji. The result was:

  "a test with : ??"

Carried out necessary changes into model file. Please accept my Apologies for not making it clear, would appreciate any lead in this matter.

Shrey
  • 145
  • 1
  • 7

2 Answers2

22
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {
                    'charset': 'utf8mb4',
                    'use_unicode': True, },
    },
}

my.cnf:

[mysqld]
character-set-server=utf8mb4
default-collation=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4
Rick James
  • 135,179
  • 13
  • 127
  • 222
0

this save me on MYSQL 8.0.1

my.cnf

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
Pedram Parsian
  • 3,750
  • 3
  • 19
  • 34
fankcoder
  • 1
  • 1
  • Were you using Django? (I hope you have updated past 8.0.1 -- that is a pre-release; one should move on to at least the "GA" version.) – Rick James Nov 14 '22 at 23:58