სტატიების დირექტორია
თუ Emoji გამოხატულება ინახება utf8 კოდირებაშიMySQL მონაცემთა ბაზაან MariaDB, მისი ჩვენება შეუძლებელია.
რატომ ხდება მონაცემთა ბაზაში შეყვანილი Emoji გამოხატულება კითხვის ნიშნის სიმბოლოდ?
იმის გამო, რომ Emoji გამონათქვამები 4-ბაიტიანი სიმბოლოებია და utf8 სიმბოლოების ნაკრები მხარს უჭერს მხოლოდ 1-3 ბაიტ სიმბოლოს, Emoji გამონათქვამები ვერ ჩაიწერება მონაცემთა ბაზაში.
როგორ მოვაგვაროთ პრობლემა, რომ მონაცემთა ბაზაში შეყვანილი Emoji გამოხატულება ხდება კითხვის ნიშნის სიმბოლო?
არსებობს 2 გამოსავალი:
- შეიყვანეთ ტექსტი ხელით, შეცვალეთ ოთხი ბაიტიანი სიმბოლოები მორგებული სიმბოლოებით.
- 修改 MySQL მონაცემთა ბაზის სიმბოლოების ნაკრები, შეცვალეთ მონაცემთა ბაზის სიმბოლოების ნაკრები utf8-დან utf8mb4-მდე, მხარდაჭერა 1-4 ბაიტი სიმბოლოებით.
სინამდვილეში, პირველი მეთოდი ძალიან ბევრი სამუშაოა და არ არის მიზანშეწონილი.
რეკომენდებულია მეორე გადაწყვეტის გამოყენება, MySQL მონაცემთა ბაზის სიმბოლოების ნაკრების შეცვლა.
MySQL 5.5.3 ვერსიიდან გამომდინარე, მონაცემთა ბაზას შეუძლია 4 ბაიტიანი utf8mb4 სიმბოლოების ნაკრების მხარდაჭერა, ხოლო სიმბოლოს შეიძლება ჰქონდეს 4 ბაიტი, ასე რომ მას შეუძლია მეტი სიმბოლოების ნაკრების მხარდაჭერა და ასევე Emoji გამონათქვამების შენახვა.
- MySQL 5.5.3-ის შემდეგ, თქვენ შეგიძლიათ უპრობლემოდ განაახლოთ utf8mb4 სიმბოლოების ნაკრები.
- ამავდროულად, utf8mb4 თავსებადია utf8 სიმბოლოების კომპლექტთან.
- utf8 სიმბოლოების კოდირება, პოზიცია და შენახვა არის utf8mb4.
- იგივეა, რაც utf8 სიმბოლოების ნაკრები, არსებული მონაცემების დაზიანება არ არის.
Იმის გამოphpMyAdminახლად შექმნილ მონაცემთა ბაზაში ახლად შექმნილი ცხრილებისთვის, სიმბოლოების ნაგულისხმევი კოდირება არის:Latin1
- ეს კოდირება არ შეუძლია ჩინური და Emoji გამონათქვამების ჩასმა;
- თქვენ უნდა შეცვალოთ მონაცემთა ბაზის სიმბოლოების ნაკრების და ცხრილის სიმბოლოების კოდირება utf8mb4-ზე;
- შემდეგ გადატვირთეთ MySQL, შეგიძლიათ ჩაწეროთ ჩინური და Emoji გამონათქვამები.
MySQL Emoji სიმბოლოების პრობლემის გადაწყვეტა
1:შეცვალეთ MySQL კონფიგურაციის ფაილი my.cnf
- (Windows სერვერი არის 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+-ში
იმედი ჩენ ვეილიანგის ბლოგი ( https://www.chenweiliang.com/ ) გააზიარა "როგორ შევინახოთ Emoji MySQL-ში? შეიყვანეთ მონაცემთა ბაზაში Emoji გამოხატვის კითხვის ნიშნის პრობლემა", რომელიც თქვენთვის სასარგებლოა.
კეთილი იყოს თქვენი მობრძანება ამ სტატიის ბმულის გასაზიარებლად:https://www.chenweiliang.com/cwl-26592.html
კეთილი იყოს თქვენი მობრძანება Chen Weiliang-ის ბლოგის ტელეგრამის არხზე, რომ მიიღოთ უახლესი განახლებები!
📚 ეს სახელმძღვანელო შეიცავს უზარმაზარ ღირებულებას, 🌟ეს იშვიათი შესაძლებლობაა, არ გამოტოვოთ! ⏰⌛💨
გააზიარეთ და მოიწონეთ თუ მოგეწონათ!
თქვენი გაზიარება და მოწონებები ჩვენი უწყვეტი მოტივაციაა!