តើធ្វើដូចម្តេចដើម្បីរក្សាទុក Emoji ទៅក្នុង MySQL? បញ្ចូលទិន្នន័យ Emoji expression question mark character problem

ប្រសិនបើ​អ៊ីម៉ូជី​ត្រូវបានរក្សាទុក​នៅក្នុង មូលដ្ឋានទិន្នន័យ MySQL ឬមូលដ្ឋានទិន្នន័យ MariaDB ក្នុងការអ៊ិនកូដ UTF-8 ពួកវានឹងមិនត្រូវបានបង្ហាញទេ។

ហេតុអ្វីបានជាកន្សោម Emoji ដែលបញ្ចូលទៅក្នុងមូលដ្ឋានទិន្នន័យក្លាយជាតួអក្សរសញ្ញាសួរ?

ដោយសារកន្សោម Emoji មានតួអក្សរ 4 បៃ ហើយសំណុំតួអក្សរ utf8 គាំទ្រតែតួអក្សរ 1-3 បៃប៉ុណ្ណោះ កន្សោម Emoji មិនអាចសរសេរទៅក្នុងមូលដ្ឋានទិន្នន័យបានទេ។

តើធ្វើដូចម្តេចដើម្បីដោះស្រាយបញ្ហាដែលកន្សោម Emoji ដែលបានបញ្ចូលទៅក្នុងមូលដ្ឋានទិន្នន័យក្លាយជាតួអក្សរសញ្ញាសួរ?

មានដំណោះស្រាយ ២៖

  1. បញ្ចូលអត្ថបទដោយដៃ ដោយជំនួសតួអក្សរបួនបៃដោយតួអក្សរផ្ទាល់ខ្លួន។
  2. កែប្រែ MySQL សំណុំតួអក្សរមូលដ្ឋានទិន្នន័យ ផ្លាស់ប្តូរសំណុំតួអក្សរមូលដ្ឋានទិន្នន័យពី utf8 ទៅ utf8mb4 គាំទ្រតួអក្សរ 1-4 បៃ។

ការពិត វិធីសាស្រ្តដំបូងគឺការងារច្រើនពេក ហើយមិនត្រូវបានណែនាំទេ។

វាត្រូវបានណែនាំឱ្យប្រើដំណោះស្រាយទីពីរ កែប្រែសំណុំតួអក្សរមូលដ្ឋានទិន្នន័យ MySQL ។

ចាប់ផ្តើមពីកំណែ MySQL 5.5.3 មូលដ្ឋានទិន្នន័យអាចគាំទ្រសំណុំតួអក្សរ utf4mb8 នៃ 4 បៃ ហើយតួអក្សរមួយអាចមានរហូតដល់ 4 បៃ ដូច្នេះវាអាចគាំទ្រសំណុំតួអក្សរបន្ថែមទៀត ហើយក៏អាចរក្សាទុកកន្សោម Emoji ផងដែរ។

  • បន្ទាប់ពី MySQL 5.5.3 អ្នកអាចដំឡើងកំណែទៅជាសំណុំតួអក្សរ utf8mb4 យ៉ាងរលូន។
  • ក្នុងពេលជាមួយគ្នានេះ utf8mb4 គឺត្រូវគ្នាជាមួយនឹងសំណុំតួអក្សរ utf8 ។
  • ការអ៊ិនកូដ ទីតាំង និងការផ្ទុកតួអក្សរ utf8 គឺនៅក្នុង utf8mb4 ។
  • ដូចគ្នានឹងសំណុំតួអក្សរ utf8 មិនមានការខូចខាតដល់ទិន្នន័យដែលមានស្រាប់ទេ។

ដោយ​សារ​តែ​ការphpmyadminសម្រាប់តារាងដែលបានបង្កើតថ្មីនៅក្នុងមូលដ្ឋានទិន្នន័យដែលបានបង្កើតថ្មី ការអ៊ិនកូដតួអក្សរលំនាំដើមគឺ៖Latin1

  • ការអ៊ិនកូដនេះមិនអាចបញ្ចូលកន្សោមចិន និង Emoji បានទេ។
  • អ្នកត្រូវផ្លាស់ប្តូរការអ៊ិនកូដសំណុំតួអក្សរនៃសំណុំតួអក្សរមូលដ្ឋានទិន្នន័យ និងតារាងទៅជា utf8mb4;
  • បន្ទាប់មក ចាប់ផ្តើម MySQL ឡើងវិញ អ្នកអាចបញ្ចូលកន្សោមចិន និង Emoji ។

ដំណោះស្រាយបញ្ហាតួអក្សរ MySQL Emoji

ជំហានទី 1: កែប្រែឯកសារកំណត់រចនាសម្ព័ន្ធ MySQL my.cnf

  • (ម៉ាស៊ីនមេវីនដូគឺ my.ini,Linuxម៉ាស៊ីនមេគឺ my.cnf)
  • ឯកសារ my.cnf ជាធម្មតានៅក្នុង/etc/mysql/my.cnfទីតាំង។
  • ផ្ទាំងបញ្ជា CWPឯកសារ my.cnf គឺនៅក្នុង/etc/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

init_connect='SET NAMES utf8mb4'

ជំហានទី 2: ចាប់ផ្ដើមមូលដ្ឋានទិន្នន័យ MySQL ឡើងវិញ

service mysqld restart

ជំហានទី 3៖ ពិនិត្យសំណុំតួអក្សរម្តងទៀត ហើយបញ្ចូល ▼ ក្នុងបន្ទាត់ពាក្យបញ្ជា SQL

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';

ពិនិត្យមើលថាតើ ▼ ខាងក្រោម

តើធ្វើដូចម្តេចដើម្បីរក្សាទុក Emoji ទៅក្នុង MySQL? បញ្ចូលទិន្នន័យ Emoji expression question mark character problem

បញ្ចូលពាក្យបញ្ជា SQL ខាងក្រោម▼

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

| collation_database | utf8mb4_unicode_ci |

| collation_server | utf8mb4_unicode_ci |

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

បន្ទាប់ពីបង្កើតមូលដ្ឋានទិន្នន័យថ្មីនៅក្នុង phpMyAdmin អ្នកត្រូវតែ ពិនិត្យមើលការអ៊ិនកូដមូលដ្ឋានទិន្នន័យ។ ▼

SHOW CREATE DATABASE db_name;
  • ដូចជា:SHOW CREATE DATABASE test;

ប្រសិនបើការអ៊ិនកូដមូលដ្ឋានទិន្នន័យមិនដំណើរការutf8mb4អ្នកត្រូវតែកែប្រែតួអក្សរមូលដ្ឋានទិន្នន័យដែលបានកំណត់ទៅutf8mb4

តើធ្វើដូចម្តេចដើម្បីកែប្រែតួអក្សរមូលដ្ឋានទិន្នន័យដែលបានកំណត់ទៅ utf8mb4?

ជំហានទី 1: ចុចឈ្មោះមូលដ្ឋានទិន្នន័យបច្ចុប្បន្ននៅក្នុង phpMyAdmin បន្ទាប់មកចុច SQL ។

ជំហានទី 2: បញ្ចូលពាក្យបញ្ជាខាងក្រោមដើម្បីកែប្រែតួអក្សរមូលដ្ឋានទិន្នន័យដែលបានកំណត់utf8mb4

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
  • ដូចជា:ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;

ជំហានទី 3: ចាប់ផ្ដើមមូលដ្ឋានទិន្នន័យ MySQL ឡើងវិញ

service mysqld restart
  • នោះ​ហើយ​ជា​វា។

នេះគឺជាឧទាហរណ៍មួយចំនួននៃពាក្យបញ្ជា SQL៖

ផ្លាស់ប្តូរសំណុំតួអក្សរលំនាំដើម និងជួរឈរតួអក្សរទាំងអស់នៃតារាងទៅជាសំណុំតួអក្សរថ្មី ▼

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;

ប្រសិនបើអ្នកគ្រាន់តែកែប្រែសំណុំតួអក្សរលំនាំដើមនៃតារាង▼

ALTER TABLE tbl_name  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
  • ដូចជា:ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;

កែប្រែសំណុំតួអក្សរនៃវាល ▼

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;

មើលលេខកូដតារាង ▼

SHOW CREATE TABLE tbl_name;

មើលលេខកូដវាល ▼

SHOW FULL COLUMNS FROM tbl_name;

មើលកូដមូលដ្ឋានទិន្នន័យបច្ចុប្បន្ន ▼

SHOW VARIABLES LIKE 'character_set_%';
  • កញ្ចប់កម្មវិធីបញ្ជា mysql-connector-java គាំទ្រតែ utf5.1.13mb8 ក្នុង 4+

សង្ឃឹមថា អត្ថបទ "តើធ្វើដូចម្តេចដើម្បីរក្សាទុក Emojis នៅក្នុង MySQL? បញ្ហាជាមួយនឹងការបញ្ចូលតួអក្សរសញ្ញាសួរ Emoji ទៅក្នុងមូលដ្ឋានទិន្នន័យ" ដែលបានចែករំលែកនៅលើ ប្លក់របស់ Chen Weiliang ( https://www.chenweiliang.com/ ) នឹងមានប្រយោជន៍សម្រាប់អ្នក។

សូមចែករំលែកតំណភ្ជាប់អត្ថបទនេះ៖ https://www.chenweiliang.com/cwl-26592.html

ដើម្បីដោះសោល្បិចលាក់កំបាំងបន្ថែមទៀត🔑 សូមស្វាគមន៍មកកាន់ឆានែល Telegram របស់យើង!

Share និង Like បើចូលចិត្ត! ការចែករំលែក និងការចូលចិត្តរបស់អ្នកគឺជាការលើកទឹកចិត្តបន្តរបស់យើង!

 

发表评论។

您的邮箱地址不会被公开。必填项已用*标注

រមូរទៅកំពូល