چگونه Emoji را در MySQL ذخیره کنیم؟در پایگاه داده مشکل علامت سوال عبارت Emoji را وارد کنید

اگر عبارت Emoji در رمزگذاری utf8 ذخیره شودپایگاه داده MySQLیا MariaDB، قابل نمایش نیست.

چرا عبارت Emoji وارد شده در پایگاه داده به یک کاراکتر علامت سوال تبدیل می شود؟

از آنجایی که عبارات Emoji کاراکترهای 4 بایتی هستند و مجموعه کاراکترهای utf8 تنها از 1-3 بایت کاراکتر پشتیبانی می کند، عبارات Emoji را نمی توان در پایگاه داده نوشت.

چگونه می توان این مشکل را حل کرد که عبارت Emoji وارد شده در پایگاه داده به یک کاراکتر علامت سوال تبدیل می شود؟

2 راه حل وجود دارد:

  1. متن را به صورت دستی وارد کنید و کاراکترهای چهار بایتی را با کاراکترهای سفارشی جایگزین کنید.
  2. تغییر خروجی مجموعه کاراکترهای پایگاه داده، مجموعه کاراکترهای پایگاه داده را از 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

  • این رمزگذاری نمی تواند عبارات چینی و ایموجی را وارد کند.
  • شما باید رمزگذاری مجموعه کاراکتر مجموعه کاراکترهای پایگاه داده و جدول را به utf8mb4 تغییر دهید.
  • سپس، MySQL را مجددا راه اندازی کنید، می توانید عبارات چینی و Emoji را وارد کنید.

حل مشکل کاراکتر Emoji MySQL

مرحله 1:فایل پیکربندی MySQL my.cnf را تغییر دهید

  • (سرور ویندوز my.ini است،لینـوکــسسرور 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 را وارد کنید

دستور 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

به کانال تلگرام وبلاگ چن ویلیانگ خوش آمدید تا از آخرین به روز رسانی ها مطلع شوید!

🔔 اولین نفری باشید که "راهنمای استفاده از ابزار هوش مصنوعی بازاریابی محتوایی ChatGPT" را در فهرست بالای کانال دریافت می کنید! 🌟
📚 این راهنما حاوی ارزش بسیار زیادی است، 🌟این یک فرصت نادر است، آن را از دست ندهید! ⏰⌛💨
اگر دوست داشتید به اشتراک بگذارید و لایک کنید
اشتراک گذاری و لایک های شما انگیزه مستمر ما هستند!

 

发表 评论

آدرس ایمیل شما منتشر نخواهد شد. از زمینه های مورد نیاز استفاده می شود * 标注

به بالا بروید