Emoji opslaan in MySQL Voer de database in Emoji-expressie vraagteken tekenprobleem

Als de Emoji-expressie is opgeslagen in utf8-coderingMySQL-databaseof MariaDB, kan het niet worden weergegeven.

Waarom wordt de Emoji-uitdrukking die in de database is ingevoerd, een vraagteken?

Omdat Emoji-expressies 4-byte-tekens zijn en de utf8-tekenset slechts 1-3 bytes aan tekens ondersteunt, kunnen Emoji-expressies niet in de database worden geschreven.

Hoe het probleem op te lossen dat de Emoji-uitdrukking die in de database is ingevoerd, een vraagteken wordt?

Er zijn 2 oplossingen:

  1. Voer tekst handmatig in en vervang vier-byte-tekens door aangepaste tekens.
  2. aanpassen MySQL Database-tekenset, verander de database-tekenset van utf8 in utf8mb4, ondersteuning voor 1-4 byte-tekens.

In feite is de eerste methode te veel werk en niet aan te raden.

Het wordt aanbevolen om de tweede oplossing te gebruiken, de tekenset van de MySQL-database te wijzigen.

Vanaf de MySQL 5.5.3-versie kan de database de utf4mb8-tekenset van 4 bytes ondersteunen, en een teken kan maximaal 4 bytes hebben, zodat het meer tekensets kan ondersteunen en ook Emoji-expressies kan opslaan.

  • Na MySQL 5.5.3 kunt u in principe naadloos upgraden naar de utf8mb4-tekenset.
  • Tegelijkertijd is utf8mb4 compatibel met de utf8-tekenset.
  • De codering, positie en opslag van utf8-tekens zijn in utf8mb4.
  • Hetzelfde als utf8-tekenset, geen schade aan bestaande gegevens.

VanwegephpMyAdminVoor nieuw gemaakte tabellen in een nieuw gemaakte database is de standaard tekencodering:Latin1

  • Deze codering kan geen Chinese en Emoji-uitdrukkingen invoegen;
  • U moet de tekensetcodering van de databasetekenset en tabel wijzigen in utf8mb4;
  • Start vervolgens MySQL opnieuw, u kunt Chinese en Emoji-expressies invoegen.

MySQL Emoji-tekenprobleemoplossing

Stap 1:Wijzig het MySQL-configuratiebestand my.cnf

  • (Windows-server is my.ini,LinuxDe server is mijn.cnf)
  • my.cnf-bestand, meestal in/etc/mysql/my.cnfpositie.
  • CWP-configuratieschermHet my.cnf-bestand is in/etc/my.cnfpositie.

Nadat je het hebt gevonden, voeg je de volgende inhoud toe in de volgende drie delen ▼

[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

init_connect='SET NAMES utf8mb4'

Stap 2:Start de MySQL-database opnieuw

service mysqld restart

Stap 3: Controleer de tekenset opnieuw en typ ▼ in de SQL-opdrachtregel

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';

Controleer of het volgende

Emoji opslaan in MySQL Voer de database in Emoji-expressie vraagteken tekenprobleem

Voer het volgende SQL-commando in▼

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

Controleer of het als volgt is▼

 +--------------------------+--------------------+

| 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_unicode_ci |

| collation_database | utf8mb4_unicode_ci |

| collation_server | utf8mb4_unicode_ci |

+--------------------------+--------------------+

Na het aanmaken van een nieuwe database in phpMyAdmin, moet u:Databasecode bekijken ▼

SHOW CREATE DATABASE db_name;
  • 如:SHOW CREATE DATABASE test;

Als de databasecodering niet isutf8mb4, moet u de databasetekenset wijzigen inutf8mb4 .

Hoe de database-tekenset wijzigen in utf8mb4?

Stap 1: Klik op de huidige databasenaam in phpMyAdmin en klik vervolgens op SQL.

Stap 2: Voer de volgende opdracht in om de databasetekenset te wijzigen in:utf8mb4

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
  • 如:ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;

Stap 3:Start de MySQL-database opnieuw

service mysqld restart
  • Dat is het.

Hier zijn enkele voorbeelden van SQL-opdrachten:

Wijzig de standaard tekenset en alle tekenkolommen van de tabel in de nieuwe tekenset ▼

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
  • 如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;

Als u alleen de standaardtekenset van de tabel wijzigt▼

ALTER TABLE tbl_name  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
  • 如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;

De tekenset van een veld wijzigen ▼

ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name 
  • 如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

Bekijk tafelcode ▼

SHOW CREATE TABLE tbl_name;

Veldcodes bekijken ▼

SHOW FULL COLUMNS FROM tbl_name;

Bekijk huidige databasecode ▼

SHOW VARIABLES LIKE 'character_set_%';
  • Het mysql-connector-java-stuurprogrammapakket ondersteunt alleen utf5.1.13mb8 in 4+

发表 评论

Uw e-mailadres wordt niet gepubliceerd. 必填 项 已 用 * 标注

Scroll naar boven