បញ្ជីអត្ថបទ
ប្រសិនបើអ៊ីម៉ូជីត្រូវបានរក្សាទុកនៅក្នុង មូលដ្ឋានទិន្នន័យ MySQL ឬមូលដ្ឋានទិន្នន័យ MariaDB ក្នុងការអ៊ិនកូដ UTF-8 ពួកវានឹងមិនត្រូវបានបង្ហាញទេ។
ហេតុអ្វីបានជាកន្សោម Emoji ដែលបញ្ចូលទៅក្នុងមូលដ្ឋានទិន្នន័យក្លាយជាតួអក្សរសញ្ញាសួរ?
ដោយសារកន្សោម Emoji មានតួអក្សរ 4 បៃ ហើយសំណុំតួអក្សរ utf8 គាំទ្រតែតួអក្សរ 1-3 បៃប៉ុណ្ណោះ កន្សោម Emoji មិនអាចសរសេរទៅក្នុងមូលដ្ឋានទិន្នន័យបានទេ។
តើធ្វើដូចម្តេចដើម្បីដោះស្រាយបញ្ហាដែលកន្សោម Emoji ដែលបានបញ្ចូលទៅក្នុងមូលដ្ឋានទិន្នន័យក្លាយជាតួអក្សរសញ្ញាសួរ?
មានដំណោះស្រាយ ២៖
- បញ្ចូលអត្ថបទដោយដៃ ដោយជំនួសតួអក្សរបួនបៃដោយតួអក្សរផ្ទាល់ខ្លួន។
- កែប្រែ 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';
ពិនិត្យមើលថាតើ ▼ ខាងក្រោម

បញ្ចូលពាក្យបញ្ជា 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
