চিন্তা করুন:
- আপনি ডাটাবেসে ডেটা সংরক্ষণ করছেন
latin1
- আপনি ডেটা মাইএসকিএলডি হিসাবে অভ্যন্তরীণভাবে পরিচালনা করা হয়
latin1
যদি ওএস থেকে বা সংযোগ থেকে প্রাপ্ত ডেটা হয় utf8
, তবে মাইএসকিএলডি কীভাবে এটি ব্যবহার করবে?
অনুমান করা বা সর্বোত্তম আশা করার পরিবর্তে আপনি আগত অক্ষর সেট আচরণ পরিবর্তন করতে পারেন। ব্যতীত information_schema
এবং mysql
, আপনার সমস্ত ডাটাবেস নেওয়া এবং ডিফল্ট অক্ষর সেট সেট utf8
:
ALTER DATABASE dbname CHARACTER SET utf8;
এটির সাথে যেতে যদি আপনার একটি নির্দিষ্ট সংঘর্ষ হয় তবে এটি করুন:
ALTER DATABASE dbname COLLATE 'utf8_general_ci';
কোলেশনগুলি এখানে থেকে বেছে নেওয়ার জন্য রয়েছে:
mysql> select * from information_schema.collations where CHARACTER_SET_NAME = 'utf8';
+--------------------+--------------------+-----+------------+-------------+---------+
| COLLATION_NAME | CHARACTER_SET_NAME | ID | IS_DEFAULT | IS_COMPILED | SORTLEN |
+--------------------+--------------------+-----+------------+-------------+---------+
| utf8_general_ci | utf8 | 33 | Yes | Yes | 1 |
| utf8_bin | utf8 | 83 | | Yes | 1 |
| utf8_unicode_ci | utf8 | 192 | | Yes | 8 |
| utf8_icelandic_ci | utf8 | 193 | | Yes | 8 |
| utf8_latvian_ci | utf8 | 194 | | Yes | 8 |
| utf8_romanian_ci | utf8 | 195 | | Yes | 8 |
| utf8_slovenian_ci | utf8 | 196 | | Yes | 8 |
| utf8_polish_ci | utf8 | 197 | | Yes | 8 |
| utf8_estonian_ci | utf8 | 198 | | Yes | 8 |
| utf8_spanish_ci | utf8 | 199 | | Yes | 8 |
| utf8_swedish_ci | utf8 | 200 | | Yes | 8 |
| utf8_turkish_ci | utf8 | 201 | | Yes | 8 |
| utf8_czech_ci | utf8 | 202 | | Yes | 8 |
| utf8_danish_ci | utf8 | 203 | | Yes | 8 |
| utf8_lithuanian_ci | utf8 | 204 | | Yes | 8 |
| utf8_slovak_ci | utf8 | 205 | | Yes | 8 |
| utf8_spanish2_ci | utf8 | 206 | | Yes | 8 |
| utf8_roman_ci | utf8 | 207 | | Yes | 8 |
| utf8_persian_ci | utf8 | 208 | | Yes | 8 |
| utf8_esperanto_ci | utf8 | 209 | | Yes | 8 |
| utf8_hungarian_ci | utf8 | 210 | | Yes | 8 |
| utf8_sinhala_ci | utf8 | 211 | | Yes | 8 |
+--------------------+--------------------+-----+------------+-------------+---------+
22 rows in set (0.03 sec)
আপনি চালাতে পারে
mysql> show collation where charset='utf8';
+--------------------+---------+-----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+--------------------+---------+-----+---------+----------+---------+
| utf8_general_ci | utf8 | 33 | Yes | Yes | 1 |
| utf8_bin | utf8 | 83 | | Yes | 1 |
| utf8_unicode_ci | utf8 | 192 | | Yes | 8 |
| utf8_icelandic_ci | utf8 | 193 | | Yes | 8 |
| utf8_latvian_ci | utf8 | 194 | | Yes | 8 |
| utf8_romanian_ci | utf8 | 195 | | Yes | 8 |
| utf8_slovenian_ci | utf8 | 196 | | Yes | 8 |
| utf8_polish_ci | utf8 | 197 | | Yes | 8 |
| utf8_estonian_ci | utf8 | 198 | | Yes | 8 |
| utf8_spanish_ci | utf8 | 199 | | Yes | 8 |
| utf8_swedish_ci | utf8 | 200 | | Yes | 8 |
| utf8_turkish_ci | utf8 | 201 | | Yes | 8 |
| utf8_czech_ci | utf8 | 202 | | Yes | 8 |
| utf8_danish_ci | utf8 | 203 | | Yes | 8 |
| utf8_lithuanian_ci | utf8 | 204 | | Yes | 8 |
| utf8_slovak_ci | utf8 | 205 | | Yes | 8 |
| utf8_spanish2_ci | utf8 | 206 | | Yes | 8 |
| utf8_roman_ci | utf8 | 207 | | Yes | 8 |
| utf8_persian_ci | utf8 | 208 | | Yes | 8 |
| utf8_esperanto_ci | utf8 | 209 | | Yes | 8 |
| utf8_hungarian_ci | utf8 | 210 | | Yes | 8 |
| utf8_sinhala_ci | utf8 | 211 | | Yes | 8 |
+--------------------+---------+-----+---------+----------+---------+
22 rows in set (0.00 sec)
mysql>
একটি ডাটাবেসের স্বতন্ত্র অক্ষরটি দেখতে এটি চালান:
mysql> show create database sample;
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| sample | CREATE DATABASE `sample` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
সেটিংস হিসাবে, আপনি এটি চেষ্টা করতে পারেন:
লাইনগুলিতে যুক্ত করুন my.cnf
[mysqld]
character_set_database=utf8
character_set_server=utf8
তারপরে মাইএসকিএল পুনরায় চালু করুন
আমি এটি নিয়ে আগস্ট 01, 2011 তে আলোচনা করেছি: একটি সারণীতে অক্ষর সেট এনকোডিং
ক্যাভেট (উইন্ডোজ মাইএসকিউএল ডিবি সার্ভারের জন্য)
এই আদেশগুলি
ALTER DATABASE dbname CHARACTER SET utf8;
ALTER DATABASE dbname COLLATE 'utf8_general_ci';
উইন্ডোজ যেভাবে ফাইলগুলি লক করে সে কারণে মাইএসকিউএলের উইন্ডোজ সংস্করণে কাজ করবেন না। প্রয়োজনীয় ফাইলটিকে বলা হয় db.opt
যা ডাটাবেস সাবফোল্ডারটিতে অবস্থিত datadir
।
আপনাকে নিম্নলিখিতগুলি করতে হতে পারে:
- mysqldump সেই ডাটাবেস (কোনও ডাটাবেস তৈরি করে না তথ্য, কেবল সারণী তৈরি এবং INSERTs)
- যে ডাটাবেস ড্রপ
- নির্দিষ্ট চারসেট এবং কোলেশন সহ ডাটাবেস তৈরি করুন
- এটি ডাম্প মধ্যে পুনরায় লোড
উপসংহার
আপনি যা কিছু করেন না কেন, আপনি পছন্দসই প্রভাবগুলি পান কিনা তা দেখতে দয়া করে কোনও ডিভ / স্টেজিং সার্ভারে কোনও পরিবর্তন সম্পাদন করুন
আপডেট 2012-12-05 11:00 ইডিটি
তোমার প্রশ্নগুলো
আমি কি সত্যিই এটি পরিবর্তন করা উচিত?
ডেটার যথাযথ চিকিত্সার গ্যারান্টি দেওয়ার জন্য, আপনি আপেল-টু আপেল নিশ্চিত করতে চাইতে পারেন। একটি চার্সেট হিসাবে প্রস্তুত ডেটা এবং এটি একটি টেবিলের সাথে ডাটাবেসের সাথে লোড করা সম্ভবত ডেটাটি সারিবদ্ধ করে যেমন এটি দেখায় অন্য অক্ষরটি সম্ভবত চরসেট মাইএসকিএলডি সঙ্গে ডেটা প্রদর্শন করবে না যখন পুনরুদ্ধার করা হবে এবং কোনও ডিবি সংযোগে ফেরত পাঠানো হবে। ডেভ / স্টেজিং সার্ভারে ডেটাবেস লোড করার চেষ্টা করুন এবং ডিফল্ট অক্ষরগুলি সেট করার জন্য পরীক্ষা করুন।
কিছু ডিফল্ট কেন কিছু utf8
ডিফল্ট ব্যবহার করে latin1
?
এটি মাইএসকিউএল বাইনারি এর ওএস সংস্করণের উপর নির্ভর করবে। উইন্ডোজ সংস্করণগুলি থাকতে পারে latin1
যখন লিনাক্স সংস্করণগুলি ব্যবহার করতে পারে utf8
।