মাইএসকিউএলে utf8mb4 এবং utf8 চরসেটের মধ্যে পার্থক্য কী?


341

মাইএসকিউএলutf8mb4 এবং utf8চরসেটের মধ্যে পার্থক্য কী ?

আমি ইতিমধ্যে ASCII , UTF-8 , UTF-16 এবং UTF-32 এনকোডিং সম্পর্কে জানি ; তবে আমি জানতে আগ্রহী যে মাইএসকিউএল সার্ভারেutf8mb4 সংজ্ঞায়িত অন্যান্য এনকোডিং প্রকারের সাথে এনকোডিংগুলির গ্রুপের পার্থক্য কি ।

ব্যবহারের / প্রস্তাব আছে কোনো বিশেষ সুবিধা হয় utf8mb4বদলে utf8?

উত্তর:


391

ইউটিএফ -8 একটি পরিবর্তনশীল দৈর্ঘ্যের এনকোডিং। ইউটিএফ -8 এর ক্ষেত্রে, এর অর্থ একটি কোড পয়েন্ট সংরক্ষণ করার জন্য এক থেকে চারটি বাইট প্রয়োজন। তবে মাইএসকিউএলের এনকোডিংটি "utf8" নামে পরিচিত ("utf8mb3" এর নাম) কেবলমাত্র বিন্দুতে সর্বোচ্চ তিনটি বাইট সঞ্চয় করে।

সুতরাং "utf8" / "utf8mb3" অক্ষর সেটটি সমস্ত ইউনিকোড কোড পয়েন্ট সংরক্ষণ করতে পারে না: এটি কেবল 0x000 থেকে 0xFFFF পরিসীমা সমর্থন করে, যাকে " বেসিক বহুভাষিক সমতল " বলা হয় । ইউনিকোড এনকোডিংগুলির তুলনাও দেখুন ।

মাইএসকিউএল ডকুমেন্টেশনটি সম্পর্কে এটি যা বলে (একই পৃষ্ঠার পূর্ববর্তী সংস্করণ) এটাই :

Utf8 [/ utf8mb3] নামের অক্ষর সেটটি প্রতিটি চরিত্রে সর্বোচ্চ তিনটি বাইট ব্যবহার করে এবং এতে কেবল বিএমপি অক্ষর থাকে। মাইএসকিউএল 5.5.3 হিসাবে, utf8mb4 অক্ষর সেটটি পরিপূরক অক্ষরের পক্ষে সর্বোচ্চ চারটি বাইট ব্যবহার করে:

  • একটি বিএমপি চরিত্রের জন্য, ইউটিএফ 8 [/ utf8mb3] এবং utf8mb4 এর একই স্টোরেজ বৈশিষ্ট্য রয়েছে: একই কোড মান, একই এনকোডিং, একই দৈর্ঘ্য।

  • পরিপূরক চরিত্রের জন্য, utf8 [/ utf8mb3] অক্ষরটি মোটেও সংরক্ষণ করতে পারে না , যখন utf8mb4- এ এটি সংরক্ষণ করার জন্য চারটি বাইট প্রয়োজন। যেহেতু utf8 [/ utf8mb3] অক্ষরটি মোটেও সংরক্ষণ করতে পারে না, আপনার কাছে utf8 [/ utf8mb3] কলামগুলিতে কোনও পরিপূরক অক্ষর নেই এবং utf8 [/ utf8mb3] এর পুরানো সংস্করণগুলি থেকে ডেটা আপগ্রেড করার সময় আপনার চরিত্র রূপান্তরকরণ বা ডেটা হারাতে হবে না worry মাইএসকিউএল।

সুতরাং যদি আপনি চান যে আপনার কলাম BMP এর বাইরে থাকা অক্ষরগুলি (এবং আপনি সাধারণত চান) যেমন ইমোজি সঞ্চয় করতে সমর্থন করেন তবে "utf8mb4" ব্যবহার করুন। এছাড়াও দেখুন প্রকৃত ব্যবহারে সর্বাধিক সাধারণ নন-বিএমপি ইউনিকোড অক্ষরগুলি কী কী?


10
আমি কেবলমাত্র এখনই মুখোমুখি হয়েছি (এখনও অবধি) যেখানে utf8mb4 'প্রয়োজনীয়' ছিল তা হ'ল চীনা এবং ইমোটিকন। অস্পষ্ট বর্ণমালা রয়েছে যা এটির প্রয়োজন।
রিক জেমস

10
আপনি যদি আপনার ডাটাবেসে এনক্রিপ্ট করা পাসওয়ার্ড এবং ডেটা রাখতে ব্যবহার করেন তবে এটিরও প্রয়োজন required আমি স্বাভাবিক ইউটিএফ ৮ ফর্ম্যাটটি ব্যবহার করে মাইএসকিএল-এ এনক্রিপ্ট করা পাসওয়ার্ড রাখছিলাম যা কিছু পাসওয়ার্ড এলোমেলোভাবে এবং ডিবাগ করা আমার পক্ষে খুব ঝামেলার কারণ তাই অবশেষে আমি বেস 6464 এনকোড ব্যবহার করার চেষ্টা করেছি এবং সমস্যাটি অস্থায়ীভাবে স্থির করেছি। তবে, এখন আমি কারণটি জানি।
মোজতাবা রেজাianিয়ান

38
@idealidea এনক্রিপ্ট করা ডেটা বাইনারি হয় এবং আপনার বারচার কলামে বাইনারি ডেটা সংরক্ষণ করা উচিত নয়। :)
কোডকাস্টার

8
@ থমাসরুতার ইউটিএফ -8 দিয়ে সংরক্ষণ করতে এই (character) অক্ষরটি চেষ্টা করুন। :)
502_গীক

2
@ মোজতবাআরিজিয়ান এটি কিছুটা পাসওয়ার্ড অ্যালগরিদমের উপর নির্ভরশীল - bcrypt2 ASCII উত্পাদন করবে।
জেসেন

60

utf8mb4কারণ আজকাল আমরা না শুধুমাত্র ভাষা অক্ষর বরং প্রতীক, সদ্য চালু ইমোজির, ইত্যাদি জমা করার জন্য দরকার সমর্থন অক্ষর সেট দরকারী।

ম্যাথিয়াস ব্যেনেন্সের মাইএসকিউএল ডেটাবেজে সম্পূর্ণ ইউনিকোডকে কীভাবে সমর্থন করা যায় সে সম্পর্কে একটি দুর্দান্ত পাঠও এ সম্পর্কে কিছুটা আলোকপাত করতে পারে।


11
মাইএসকিউএল 8.0 এখন utf8mb4 অক্ষর সেটকে ডিফল্ট। [ mysql.com/products/enterprise/techspec.html]
আহমেদ রেজেক

47

মাইএসকিউএল 8.0 রেফারেন্স ম্যানুয়াল থেকে নেওয়া :

  • utf8mb4: ইউনিকোড অক্ষরের একটি ইউটিএফ -8 এনকোডিং অক্ষর প্রতি এক থেকে চার বাইট ব্যবহার করে set

  • utf8mb3: ইউনিকোড অক্ষরের একটি ইউটিএফ -8 এনকোডিং অক্ষর প্রতি এক থেকে তিন বাইট ব্যবহার করে set

ইন মাইএসকিউএল utf8 বর্তমানে উপনাম জন্য utf8mb3যা অবচিত এবং ভবিষ্যতে সরিয়ে ফেলা হবে মাইএসকিউএল মুক্তি। এই মুহুর্তে utf8 একটি রেফারেন্স হয়ে যাবে utf8mb4

সুতরাং এই উপনাম নির্বিশেষে, আপনি সচেতনভাবে নিজেকে একটি utf8mb4এনকোডিং সেট করতে পারেন ।

উত্তরটি সম্পূর্ণ করতে, আমি নীচে @ উইলিয়ামএন্ট্রিকেনের মন্তব্য যোগ করতে চাই (ম্যানুয়াল থেকেও নেওয়া):

এর অর্থ সম্পর্কে অস্পষ্টতা এড়াতে পরিবর্তে চরিত্র সেট রেফারেন্সের জন্য স্পষ্ট utf8করে নির্দিষ্ট করে বিবেচনা করুন ।utf8mb4utf8

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.