MySQL ජපන් අක්ෂර කේතනයේ ගැටළු නිරාකරණය: utf8mb4 සමඟ මොජිබාකේ වැළැක්වීම (සම්පූර්ණ මාර්ගෝපදේශය)

目次

1. හැඳින්වීම

MySQL හි ජපන් භාෂාව හසුරවීමට ගැටළුවක්ද? හේතු සහ සම්පූර්ණ විසඳුම් පැහැදිලි කර ඇත

MySQL වෙබ් යෙදුම් සහ WordPress සඳහා දත්ත ගබඩාවක් ලෙස පුළුල් ලෙස භාවිතා වේ. එහෙත්, ඔබ කවදාවත් ජපන් පෙළ අකාරාදියක් වීම හෝ අක්ෂර “???” ලෙස පෙන්වීම වැනි ගැටළු මුහුණ දී තිබේද?

මෙම ගැටළුව අරඹන අය සඳහා සහ XAMPP, MAMP වැනි ස්ථානීය සංවර්ධන පරිසරයන් හෝ Docker වැනි වර්චුවල් සැකසුම් තුළ බොහෝ විට සිදුවේ. ප්‍රධාන හේතුව MySQL හි අක්ෂර කේතනය සැකසුම අනිසි වීමයි.

මෙම ලිපියේ, ජපන් පෙළ හසුරවීමට MySQL නිවැරදිව සැකසීමේ ක්‍රමය, සාමාන්‍ය ගැටළු සහ ඒවායේ විසඳුම් පැහැදිලිව විස්තර කරමු.

Docker සැකසුම, my.cnf සැකසුම්, සහ පවතින දත්ත ගබඩා වෙනස් කිරීම වැනි වාස්තුක පරිසර සඳහා ප්‍රායෝගික මාර්ගෝපදේශයද ඇතුළත් කර ඇත. මෙම මාර්ගෝපදේශය අරඹන අයටත් වෘත්තීය ඉංජිනේරුවන්ටත් සුදුසුය.

ඊළඟ කොටසේ, ජපන් අක්ෂර අකාරාදියට පත්වීමේ මූලික හේතුව පරීක්ෂා කරමු.

2. ජපන් පෙළ අකාරාදියට පත්වීමේ ප්‍රධාන හේතු

MySQL ජපන් භාෂාව නිවැරදිව පෙන්වන්නේ නැති හේතුව කුමක්ද?

ජපන් පෙළ MySQL හි “???” හෝ කියවිය නොහැකි ලකුණු ලෙස පෙන්වෙනවා නම්, හේතුව බොහෝවිට අනිසි අක්ෂර කේතනය සැකසුම් වේ. MySQL ඉතා සවිස්තරාත්මක වුවද, අක්ෂර සමුදාය සහ සමානකරණ සැකසුම් නොගැලපේ නම්, දත්ත නිවැරදිව ගබඩා කර නැවත ලබා ගත නොහැක.

පහත දැක්වෙන්නේ සාමාන්‍යතම හේතු තුනයි.

හේතුව 1: පෙරනිමි අක්ෂර සමුදාය latin1 ලෙස රඳා පවතී

පරණ MySQL අනුවාද හෝ පෙරනිමි ස්ථාපන කාලයේ latin1 (බටහිර යුරෝපීය භාෂා කේතනය) භාවිතා විය හැක. latin1 ජපන් භාෂාව නිවැරදිව හසුරවන්නේ නැති බැවින්, ඇතුළත් කිරීමේදී අක්ෂර අකාරාදියට පත්වේ. එමනිසා දත්ත දත්ත ගබඩාවේ ගබඩා වන විටම අකාරාදියට පත්වේ.

හේතුව 2: සේවාදායකය සහ සේවාග්‍රාහකය අතර අක්ෂර සමුදාය නොගැලපීම

MySQL තුළ අක්ෂර කේතනය තත්ත්ව තුනකදී සිදුවේ:

  • සේවාග්‍රාහකයෙන් (character_set_client) ප්‍රේරණය වන විට
  • සේවාදායක පාර්ශ්ව සැකසීමේදී (character_set_server)
  • ප්‍රතිඵල ප්‍රතිදානයේදී (character_set_results)

උදාහරණයක් ලෙස, සේවාග්‍රාහකය utf8mb4 භාවිතා කරනවා නම්ත්, සේවාදායකය දත්ත latin1 ලෙස සැකසුවහොත්, සැකසීමේදී අකාරාදියට පත්වේ. මෙම නොගැලපීම සාමාන්‍යතම වැරදි අතර එකකි.

හේතුව 3: දත්ත ගබඩා, වගුව, සහ තීරුවේ සැකසුම් අසමතුලිත වීම

අක්ෂර සමුදාය පැහැදිලිව සඳහන් නොකර නව වගු සාදන විට, MySQL එහි පෙරනිමි සැකසුම යොදයි. මෙය පහත වැනි අසමතුලිත සැකසුම් ඇති කරයි:

  • දත්ත ගබඩා: utf8mb4
  • වගුව: utf8
  • තීරුව: latin1

මෙවැනි අසමතුලිතතාවය ගබඩා කිරීමේදී සහ පෙන්වීමේදී අකාරාදියට පත්වූ පෙළ ඇති කරයි.

සාරාංශය: බොහෝ ගැටළු අක්ෂර සමුදාය නොගැලපීමෙන් උද्भව වේ

බොහෝ අවස්ථාවල, MySQL හි ජපන් අකාරාදියට පත්වීම සැකසූ අක්ෂර සමුදාය නොගැලපීම නිසා සිදුවේ. ඊළඟ කොටසේ, MySQL හි වත්මන් අක්ෂර කේතනය සැකසුම් පරීක්ෂා කරන ආකාරය පැහැදිලි කරමු. නිවැරදි පරීක්ෂණය ඔබට ගැටළුව ඉක්මනින් හඳුනාගෙන විසඳීමට ඉඩ සලසයි.

3. MySQL අක්ෂර සමුදා සැකසුම් පරීක්ෂා කිරීමේ ක්‍රමය

හේතුව සොයා ගැනීමට පළමු පියවර වන්නේ වත්මන් සැකසුම් පරීක්ෂා කිරීමයි

MySQL ජපන් භාෂාව නිවැරදිව හසුරවන්නේ නැති විට, ඔබ පළමුව පරීක්ෂා කළ යුතුය අක්ෂර සමුදාය සහ සමානකරණය සඳහා වත්මන් සැකසුම්. MySQL හි, සේවාග්‍රාහකය සහ සේවාදායකය අතර බහු අක්ෂර සමුදා හුවමාරු වේ, ඒවා ගැලපිය යුතුය.

මෙහි, මෙම සැකසුම් විධාන පේළිය සහ SQL විමසුම් භාවිතා කර පරීක්ෂා කරන ආකාරය පැහැදිලි කරමු.

SHOW VARIABLES විධානය භාවිතා කර අක්ෂර සමුදා පරීක්ෂා කිරීම

MySQL වෙත සම්බන්ධ වී සිටින විට, වත්මන් අක්ෂර සමුදා සැකසුම පරීක්ෂා කිරීමට පහත SQL ක්‍රියාත්මක කරන්න:

SHOW VARIABLES LIKE 'character_set%';

මෙම විධානය ක්‍රියාත්මක කිරීමෙන් පසු, ඔබට පහත පරිදි ප්‍රතිඵල ලැබේ:

+--------------------------+---------+
| Variable_name            | Value   |
+--------------------------+---------+
| character_set_client     | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database   | utf8mb4 |
| character_set_results    | utf8mb4 |
| character_set_server     | utf8mb4 |
| character_set_system     | utf8    |
+--------------------------+---------+

සෑම සැකසුමදේ අර්ථය

SettingMeaning and Role
character_set_clientThe encoding of strings sent from the client
character_set_connectionThe character set used during client-to-server communication
character_set_resultsThe character set used when query results are returned to the client
character_set_databaseThe default character set of the currently selected database
character_set_serverThe default character set used when creating new databases and tables
character_set_systemThe character set used internally by the server (usually no need to change)

විශේෂයෙන්, character_set_client, character_set_connection, සහ character_set_results සියල්ල එකම වීම අත්‍යවශ්‍ය වේ. ඒවා වෙනස් නම්, යැවූ හෝ ආපසු ලැබූ පද පෙළ දෝෂ සහිතව පෙනෙන්න පුළුවන්.

  • සියලු අයිතම utf8mb4 ලෙස සකස් කර ඇති බව තහවුරු කරන්න
  • බහු අක්ෂර සමුහ මිශ්‍ර නම්, පසුගිය කොටසේ හඳුන්වා දෙන සැකසුම් වෙනස්කම් අය කරන්න
  • සැලකිල්ලෙන්: වගු සහ තීරුවලට තමන්ගේ අක්ෂර සමුහ සැකසුම් තිබිය හැක

සටහන: සමානකරණ සැකසුම්ද පරීක්ෂා කරන්න

සමානකරණය පද පෙළ අනුක්‍රමණය සහ සැසඳීමේ හැසිරීමට බලපායි. ඔබට එය පරීක්ෂා කළ හැක්කේ:

SHOW VARIABLES LIKE 'collation%';

සමානකරණය සෘජුවම මොජිබාකේ (mojibake) හේතු වීමට අඩු වුවත්, ජපන් පෙළ සඳහා අනුක්‍රමණය සහ සෙවීමේ නිරවද්‍යතාවයට බලපායි. utf8mb4_general_ci හෝ utf8mb4_unicode_ci වැනි සැකසුම් භාවිතා කර ඇති බව තහවුරු කිරීම විශ්වාසදායක වේ.

ඊළඟ කොටසේ, MySQL හි ජපන් භාෂාව නිවැරදිව හසුරවීමට නිරූපිත සැකසුම් ක්‍රම පැහැදිලි කරමු, එම සැකසුම් වෙනස් කිරීමේ ක්‍රම ඇතුළත්.

4. MySQL හි ජපන් භාෂාව නිවැරදිව හසුරවීමට සැකසුම් කිරීම

නිවැරදි සැකසුම් සමඟ මොජිබාකේ වෙතින් නිදහස් වන්න

MySQL හි ජපන් භාෂාව නිවැරදිව හසුරවීමට, සියලු අක්ෂර සමුහ සැකසුම් සම්මත කිරීම අත්‍යවශ්‍ය වේ. විශේෂයෙන්, utf8mb4 යනු නිර්දේශිත තේරීමයි, එය ජපන් භාෂාව පමණක් නොව, ඉමෝජි සහ විශේෂ අක්ෂරද සහය දක්වයි.

මෙම කොටසේ, අපි ගනුදෙනුකරු පාර්ශ්වය, සේවාදායක පාර්ශ්වය, සහ දත්ත ගබඩා/වගුව/තීරුව මට්ටම් සඳහා නිරූපිත සැකසුම් ක්‍රම පැහැදිලි කරමු.

4.1 ගනුදෙනුකරු පාර්ශ්ව සැකසුම: සම්බන්ධතාවයේදී පැහැදිලිව සකසන්න

MySQL වෙත සම්බන්ධ වූ පසු, සම්බන්ධතා අක්ෂර සමුහය utf8mb4 ලෙස අගුළු දැමීමට පහත කමාන්ඩ් ක්‍රියාත්මක කරන්න:

SET NAMES 'utf8mb4';

මෙම කමාන්ඩ් එක එකවර පහත සඳහන් තුන් විචල්‍යයන්ට අදාළ වේ:

  • character_set_client
  • character_set_connection
  • character_set_results

✅ සටහන:

  • ඔබ PHP භාවිතා කර සම්බන්ධ වන්නේ නම්, mysqli_set_charset($conn, 'utf8mb4'); වැනි කේතයක් ලියන්න.
  • mysql CLI කමාන්ඩ් භාවිතා කරන විට, --default-character-set=utf8mb4 ලෙස නියම කිරීමත් ප්‍රයෝජනවත් වේ.

4.2 සේවාදායක පාර්ශ්ව සැකසුම: my.cnf මගින් ස්ථිර සැකසුම්

පහත පරිදි my.cnf (හෝ my.ini) වෙත සැකසුම් එක් කිරීමෙන්, සම්පූර්ණ MySQL සේවාදායකයේ පෙරනිමි අක්ෂර සමුහය utf8mb4 ලෙස වෙනස් කළ හැක:

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4 collation-server = utf8mb4_general_ci

✅ වැදගත් සටහන්:

  • සැකසුම් වෙනස් කිරීමෙන් පසු MySQL නැවත ආරම්භ කළ යුතුය.
  • උදාහරණය: sudo systemctl restart mysql (Linux)
  • ගොනුවේ ස්ථානය පරිසරය අනුව වෙනස් වේ. සාමාන්‍ය Linux මාර්ගයන් /etc/mysql/my.cnf සහ /etc/my.cnf වේ.

4.3 දත්ත ගබඩා සහ වගු සඳහා අක්ෂර සමුහ නියම කිරීම

නව දත්ත ගබඩා හෝ වගු සාදන විට, අක්ෂර සමුහය පැහැදිලිව නියම කරන්න:

උදාහරණය: දත්ත ගබඩාවක් සාදීම
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
උදාහරණය: වගුවක් සාදීම
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
පවතින වගුවක් පරිවර්තනය කිරීමට අවශ්‍ය නම්
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

4.4 නිර්දේශිත අක්ෂර සමුහය: utf8mb4 කෙරෙහි හේතුව

MySQL හි utf8 නමැති අක්ෂර සමුහයක්ද ඇත, නමුත් එය UTF-8 අක්ෂරයක් සඳහා උපරිම 3 බයිට් පමණක් සහය දක්වයි. එබැවින්, ඉමෝජි සහ සමහර කන්ජි ප්‍රභේද නිවැරදිව ගබඩා කළ නොහැක.

එහෙත්, utf8mb4 4 බයිට් දක්වා සහය දක්වයි සහ එබැවින් සම්පූර්ණයෙන්ම UTF-8 සමග සමපාත වේ. මෙය ඇයි අද සම්මත නිර්දේශය බවට පත්ව ඇත්තේද යන්නයි.

ඊළඟ පරිච්ඡේදයේ, අපි Docker පරිසරවලට විශේෂිත ජපන් භාෂා සම්බන්ධ සැකසුම් සහ සැලකිලි පැහැදිලි කරමු. කන්ටේනරීකරණ සංවර්ධන සැකසුම්වලදී පවා මොජිබාකේ වැළැක්වීමට ප්‍රධාන කරුණු ආවරණය කරමු.

5. Docker පරිසරයක ජපන් භාෂා සැකසීම

කන්ටේනරීකරණ පරිසරවල නිවැරදි ජපන් සහය සහතික කිරීම

අංශකාලයේ, Docker සුලබ සංවර්ධන පරිසරයක් බවට පත්ව ඇත. නමුත්, බොහෝ සංවර්ධකයින් වාර්තා කරන්නේ “Docker හි ධාවනය වන MySQL හි ජපන් පෙළ මිශ්‍ර වේ” යන්නයි. මෙය සාමාන්‍යයෙන් සිදුවන්නේ කන්ටේනර් ස්ථානීය සැකසුම් හෝ මුල් MySQL සැකසුම් නිවැරදිව සකස් නොකිරීම නිසා ය.

මෙම කොටසේ, අපි Docker හි MySQL භාවිතා කරන විට ජපන් භාෂාව නිවැරදිව හසුරුවීම සඳහා ප්‍රායෝගික විසඳුම් හඳුන්වා දෙමු.

5.1 Dockerfile හි භාෂා සහය සකසන්න

ඔබගේ යෙදුම් සේවාදායකය (MySQL කන්ටේනරය පමණක් නොව) ජපන් භාෂාව හසුරවීමට අවශ්‍ය නම්, ලොකේල් සැකසුම අවශ්‍ය වේ. පහත දැක්වෙන්නේ Debian‑අධාරිත Dockerfile එකේ උදාහරණයක් වේ:

RUN apt-get update && apt-get install -y locales \
  && locale-gen ja_JP.UTF-8 \
  && update-locale LANG=ja_JP.UTF-8

ENV LANG=ja_JP.UTF-8
ENV LC_ALL=ja_JP.UTF-8

✅ ප්‍රධාන කරුණු:

  • යෙදුම් පැත්තේ ජපන් ගොනු කියවීම හෝ ලිවීමේදී අකුරු කේතන දෝෂ වැළැක්වයි.
  • MySQL පමණක් නොව PHP සහ Python වැනි රන්ටයිම් පරිසරයන්ටද බලපායි.

5.2 docker-compose හි අක්ෂර සමුහ නියම කරන්න

docker‑compose.yml සමඟ MySQL කන්ටේනරයක් ආරම්භ කරන විට, අක්ෂර සමුහයන් පහත පරිදි නියම කළ හැක:

services:
  db:
    image: mysql:8.0
    container_name: mysql-ja
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: mydb
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      TZ: Asia/Tokyo
      LANG: ja_JP.UTF-8
      LC_ALL: ja_JP.UTF-8
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
    ports:
      - "3306:3306"
    volumes:
      - ./mysql-data:/var/lib/mysql

✅ අතිරේක සටහන්:

  • command: කොටස MySQL වෙත ආරම්භක පරාමිතීන් ලබා දීමට ඉඩ සලසයි.
  • TZ සහ LANG නිවැරදි ජපන්‑අනුකූල පරිසරයක් සලස්වීමට උපකාරී වේ.

5.3 MySQL කන්ටේනරය තුළ ජපන් සහය තහවුරු කරන්න

utf8mb4 සමඟ MySQL නිසි ලෙස සැකසී ඇති බව තහවුරු කිරීමට, කන්ටේනරයට ඇතුළු වී පරීක්ෂා කරන්න:

docker exec -it mysql-ja mysql -u root -p

ඇතුළු වූ පසු, මෙය ක්‍රියාත්මක කරන්න:

SHOW VARIABLES LIKE 'character_set%';

සියලු සම්බන්ධිත සැකසුම් utf8mb4 නම්, ජපන් පෙළ ගබඩා කිරීම සහ ප්‍රදර්ශනය විශ්වාසදායකව ක්‍රියා කරනු ඇත.

සාරාංශය: Docker හි ආරම්භක සැකසුම් සහ භාෂා වින්‍යාසය අත්‍යවශ්‍ය වේ

Docker තුළ MySQL හි ජපන් භාෂාව ආරක්ෂිතව හසුරවීමට:

  • MySQL කන්ටේනරය ආරම්භ කරන විට utf8mb4 පැහැදිලිව නියම කරන්න
  • යෙදුම් කන්ටේනරයේ භාෂාව ja_JP.UTF-8 ලෙස සකසන්න

මෙම පූර්ව‑සැකසුම් ඉතා වැදගත් වේ.

ඊළඟ කොටසේ, නිතර වාර්තා වන ගැටළු සහ ඒවායේ ප්‍රායෝගික විසඳුම් පිළිබඳව සාකච්ඡා කරමු.

6. පොදු ගැටළු සහ ඒවා සකස් කිරීමේ ක්‍රම

සැකසුම් කිරීමෙන් පසුද පවා අකුරු විකෘතිව පෙනේද? හේතුව තවමත් පවතී

utf8mb4 වෙත MySQL සැකසුම් වෙනස් කිරීමෙන් පසුද, ජපන් පෙළ තවමත් නිවැරදිව පෙන්වීමට හෝ සුරැකීමට නොහැකි විය හැක. මෙම කොටසේ, නිතර වාර්තා වන ගැටළු සහ ඒවායේ ප්‍රායෝගික විසඳුම් හඳුන්වා දෙමු.

ගැටළුව 1: සැකසුම් වෙනස් කිරීම ක්‍රියාත්මක නොවේ

කාරණය:

my.cnf හෝ docker-compose.yml වැනි වින්‍යාස ගොනු වෙනස් කිරීමෙන් පසු, MySQL නැවත ආරම්භ කර නොමැත.

විසඳුම:

  • සේවාදායක පරිසරය: sudo systemctl restart mysql
  • Docker පරිසරය: docker-compose downdocker-compose up -d

ගැටළුව 2: ටර්මිනලයේ ජපන් පෙළ විකෘතිව පෙනේ

කාරණය:

ගැටළුව MySQL තුළ නොව ටර්මිනලයේ ප්‍රදර්ශන කේතනය විය හැක. උදාහරණයක් ලෙස, Windows Command Prompt UTF‑8 නිසි ලෙස පෙන්වීමට නොහැකි විය හැක.

  • Windows: chcp 65001 භාවිතා කර UTF‑8 වෙත මාරු කරන්න
  • macOS/Linux: ටර්මිනල් කේතනය UTF‑8 ලෙස සකසා ඇති බව (සාමාන්‍යයෙන් පෙරනිමි) තහවුරු කරන්න

ගැටළුව 3: පවතින දත්ත ගබඩා හෝ වගු latin1 සමඟ නිර්මාණය කර ඇත

කාරණය:

latin1 සමඟ පවතින දත්ත ගබඩා හෝ වගු මුලින්ම නිර්මාණය කර ඇත්නම්, ජපන් දත්ත දැනටමත් දූෂිත විය හැක.

විසඳුම:

  1. වගුවේ ව්‍යුහය පරීක්ෂා කරන්න:

    SHOW CREATE TABLE your_table_name;
    
  2. වගුවේ අක්ෂර සමුහය පරිවර්තනය කරන්න:

    ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    

වැදගත්:

දැනට දූෂිත දත්ත පරිවර්තනයෙන් පමණක් සකස් කළ නොහැක. බැකප් එකෙන් ප්‍රතිස්ථාපනය කිරීම හෝ දත්ත අතින් සකස් කිරීම ගැන සිතන්න.

ගැටළුව 4: PHP හෝ Python යෙදුම් වල අක්ෂර කේතන නොගැලපීම

කාරණය:

MySQL utf8mb4 භාවිතා කරනවාට පවා, යෙදුම වෙනත් කේතනයකින් දත්ත යවන විට අකුරු විකෘති වීම සිදුවේ.

විසඳුම:

  • PHP: mysqli_set_charset($conn, "utf8mb4");
  • Python (MySQL Connector): සම්බන්ධ වීමේදී charset='utf8mb4' නියම කරන්න

ගැටළුව 5: CSV හෝ Excel ගොනු ආයාත/නිර්යාත කිරීමේදී අකුරු විකෘති වීම

කාරණය:

CSV හෝ Excel ගොනු Shift_JIS හෝ BOM සමඟ UTF-8 භාවිතා කරනු ඇත, එය MySQL හි utf8mb4 සැකසුමට ගැලපෙන්නා නොවිය හැක.

විසඳුම:

  • ආයාත කිරීමට පෙර CSV ගොනු UTF-8 වෙත පරිවර්තනය කරන්න
  • නිර්යාත කිරීමට පෙර SET NAMES 'utf8mb4'; විධානය පැහැදිලිව ක්‍රියාත්මක කරන්න
  • Excel වෙතින් සුරකිද්දී, “UTF-8 (with BOM)” ආකෘතිය තෝරන්න

සම්පූර්ණ ගැටළු නිරාකරණ පරීක්ෂා ලැයිස්තුව

CheckpointStatus
All character_set_* variables are utf8mb4
collation_server is utf8mb4_general_ci
Database, table, and column character sets are explicitly defined
Application sends data using utf8mb4
Environment (terminal/editor) encoding is UTF-8

ඊළඟ කොටසේ, අපි ප්‍රධාන කරුණු සාරාංශ කර MySQL පරිසරවල ජපන් භාෂාව ආරක්ෂිතව හසුරවීමට අවසාන නිර්දේශ ලබා දෙනු ඇත.

7. නිගමනය

MySQL හි ජපන් භාෂාව හසුරවීමට අවශ්‍ය මූලික සංකල්ප සහ සැකසුම් සමාලෝචනය

ජපන් භාෂාව MySQL හි නිවැරදිව හසුරවීමට, “utf8 ලෙස සකස් කිරීම ප්‍රමාණවත්” යැයි සිතීම ප්‍රමාණවත් නොවේ. සැබැවින්ම වැදගත් වන්නේ සැකසුම් සමගිත්වය සහ සම්පූර්ණ දත්ත ප්‍රවාහය අවබෝධ කර ගැනීම ය.

මෙම ලිපියේ ආවරණය කළ ප්‍රධාන කරුණු:

  • ජපන් mojibake හි ප්‍රධාන කාරණය latin1 වැනි අනුචිත අක්ෂර සමුහ භාවිතය හෝ සේවාදායක සහ ග්‍රාහක අතර නොගැලපෙන සැකසුම් වේ.
  • MySQL අක්ෂර සමුහ සැකසුම් SHOW VARIABLES විධානය භාවිතා කර පරීක්ෂා කළ හැක.
  • නිර්දේශිත අක්ෂර සමුහය utf8mb4 වේ. එය සම්පූර්ණ UTF-8 සමඟ අනුකූල වන අතර ඉමෝජි සහ විස්තීර්ණ කන්ජි අක්ෂර සහය දක්වයි.
  • සැකසුම් තුනේ මට්ටමින් : ග්‍රාහක, සේවාදායක, සහ දත්ත ගබඩා/වගුව මට්ටමින් යෙදිය යුතුය.
  • Docker පරිසරවල, command: සහ LANG නියම කිරීම අත්‍යවශ්‍ය වේ. දෙකම, ප්‍රදේශීය සැකසුම සහ අක්ෂර සමුහය නිවැරදිව සකස් කළ යුතුය.
  • ගැටළු ඇති වූ විට, පියවරෙන් පියවර වෙන් කර නිරාකරණය කරන්න . MySQL පමණක් නොව, ටර්මිනල්, යෙදුම් ස්තර, සහ බාහිර දත්ත අන්තර්ක්‍රියාත්මක කිරීමත් පරීක්ෂා කරන්න.

අනාගත මෙහෙයුම් සඳහා හොඳ පුරුදු

  • නව MySQL පරිසරයක් සකස් කරන විට, ආරම්භයෙන්ම utf8mb4 පෙරනිමි ලෙස සැලසුම් කරන්න .
  • කණ්ඩායම් හෝ බහු-පරිසර සංවර්ධනයේ, සැකසුම් ගොනු සහ සම්බන්ධතා පරාමිතීන් ලේඛනය කර බෙදාගන්න .
  • Docker හෝ CI/CD පරිසරවල, පරිසර විචල්‍ය සහ කළමනාකරණ ගොනු මගින් සැකසුම් ස්වයංක්‍රීය කිරීම මූලික වේ.
  • දත්ත ආයාත/නිර්යාත කිරීමේදී, iconv හෝ nkf වැනි අක්ෂර කේතන පරිවර්තන මෙවලම් භාවිතා කිරීම ගැන සිතන්න.

අවසාන අදහස්

ඔබේ MySQL පරිසරය ජපන් භාෂාව සඳහා නිවැරදිව සැකසූ පසු, දිගුකාලීන සංවර්ධනය සහ මෙහෙයුම් ගණනාවක් සුවිශේෂී ලෙස සුමට වේ. “mojibake සිදුවීමේ හේතුව” සහ “කොන සැකසුම් යෙදිය යුතුද” යන දෙකම අවබෝධ කර ගැනීමෙන්, ගැටළු සිදුවීමට පෙර වැළැක්වීමට සහ ස්ථාවර දත්ත සැකසීමේ හැකියාව ලබා ගත හැක.

මෙම මාර්ගෝපදේශය ඔබට වඩා විශ්වාසනීය සහ සුවපහසු සංවර්ධන පරිසරයක් ගොඩනැගීමට උපකාරී වේ යැයි අපි බලාපොරොත්තු වෙමු.

8. නිතර අසන ප්‍රශ්න (FAQ)

MySQL සහ ජපන් සහය පිළිබඳ නිතර අසන ප්‍රශ්න

Q1. ජපන් පෙළ “???” ලෙස පෙන්වයි. කාරණය කුමක්ද?

A. සාමාන්‍යතම හේතුව අක්ෂර කේතනය නොගැලපීම වේ. උදාහරණයක් ලෙස, ගනුදෙනුකරු utf8mb4 භාවිතා කර ජපන් පාඨයක් යවන විට, සේවාදායකය එය latin1 ලෙස ලබා ගන්නේ නම්, මොජිබාකේ (文字化け) සිදුවේ.
සම්බන්ධ වීමේදී SET NAMES 'utf8mb4'; ක්‍රියාත්මක කිරීම බොහෝ අවස්ථා විසඳයි.

Q2. මම utf8mb4 my.cnf තුළ සකස් කළා, නමුත් එය ක්‍රියාකරනේ නැත.

A. my.cnf සංස්කරණය කිරීම පමණක් ප්‍රමාණවත් නොවේ. ඔබ MySQL සේවාදායකය නැවත ආරම්භ කළ යුතුය.
Linux හි sudo systemctl restart mysql ක්‍රියාත්මක කරන්න. Docker හි docker-compose down ක්‍රියාත්මක කර පසු docker-compose up -d ක්‍රියාත්මක කරන්න.

Q3. පවතින වගු වල ජපන් පාඨය විකෘති වී ඇත. ඒවා සකස් කළ හැකිද?

A. සම්පූර්ණ ප්‍රතිසාධනය කටයුතු කර ගැනීම අභියෝගාත්මක විය හැකි නමුත්, පහත පියවර අනුගමනය කළ හැක:

  1. වගුවේ ව්‍යුහය පරීක්ෂා කරන්න ( SHOW CREATE TABLE )
  2. අක්ෂර සමුහය පරිවර්තනය කරන්න
    ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    

දත්ත දැනටමත් විකෘති වී ඇත්නම්, උපස්ථාපනයෙන් ප්‍රතිසාධනය හෝ අතින් සකස් කිරීම අවශ්‍ය විය හැක.

Q4. මම Docker තුළ MySQL භාවිතා කරන අතර ජපන් විකෘතිකරණය අත්විඳිමි.

A. MySQL සැකසුම් වලට අමතරව, ඔබගේ Dockerfile හෝ docker-compose.yml (උදා: LANG=ja_JP.UTF-8) තුළ ප්‍රදේශීය සැකසුම සකස් කළ යුතුය.
MySQL කන්ටේනරය ආරම්භ කරන විට --character-set-server=utf8mb4 යන පරාමිතිය පැහැදිලිව සඳහන් කරන්න.

Q5. utf8 සහ utf8mb4 අතර වෙනස කුමක්ද? මට කුමන එක භාවිතා කළ යුතුද?

A. MySQL හි utf8 3-බයිට් UTF-8 අක්ෂර පමණක් සහය දක්වයි. එයට විරුද්ධව, utf8mb4 4-බයිට් අක්ෂර (ඉමෝජි සහ විස්තීර්ණ කන්ජි ඇතුළත්) සහය දක්වයි.
අනුකූලතාවය සහ අනාගත ආරක්ෂාව පිළිබඳව, utf8mb4 දැඩි ලෙස නිර්දේශ කරයි.

Q6. Excel වෙතින් අපනයන කරන CSV ගොනු විකෘති වේ. මට මොකද කළ යුතුද?

A. Excel සාමාන්‍යයෙන් Shift_JIS හෝ BOM සමඟ UTF-8 භාවිතා කරයි, එය MySQL සැකසුම් සමඟ ගැටළුවක් ඇති කරයි.
CSV ගොනුව UTF-8 ආකෘතිය ලෙස සපයන්න, හෝ ආයාත කිරීමේ පෙර SET NAMES 'utf8mb4'; ක්‍රියාත්මක කර කේතනයන් සමඟ සමාන කරගන්න.


මෙම නිතර අසන ප්‍රශ්න (FAQ) ඔබේ අවශ්‍යතාවයට නොගැලපේ නම්, සැකසුම් මුල සිටම පරීක්ෂා කරන්න හෝ සැකසුම අනුව පරිසරය නැවත ගොඩනඟා ගැනීමට සිතන්න.
තාක්ෂණික අභියෝග ඉවසීමෙන් හසුරවීම MySQL හි ජපන් දත්ත නිවැරදිව කළමනාකරණය කිරීමේ මූලිකයයි.