ডানদিকে এনকোডিং পাওয়া সত্যিই জটিল - এখানে অনেকগুলি স্তর রয়েছে:
- ব্রাউজার
- পৃষ্ঠা
- পিএইচপি
- মাইএসকিউএল
পিএইচপি থেকে এসকিউএল "SET CHARSET utf8" কমান্ড নিশ্চিত করবে যে ক্লায়েন্ট সাইড (পিএইচপি) ডাটাবেসে কীভাবে সংরক্ষণ করা হয় তা বিবেচনা না করে utf8 তে ডেটা পাবে। অবশ্যই, তাদের প্রথমে সঠিকভাবে সংরক্ষণ করা দরকার।
ডিডিএল সংজ্ঞা বনাম বাস্তব তথ্য
সারণী / কলামের জন্য সংজ্ঞায়িত এনকোডিংয়ের অর্থ এই নয় যে ডেটা সেই এনকোডিংয়ে রয়েছে। আপনি যদি কোনও টেবিল হিসাবে সংজ্ঞায়িত হয়ে থাকে utf8
তবে এটি পৃথক এনকোডিং হিসাবে সঞ্চিত করে থাকেন, তবে মাইএসকিউএল এগুলি তাদের হিসাবে বিবেচনা করবে utf8
এবং আপনি সমস্যায় পড়ছেন । যার অর্থ আপনাকে প্রথমে এটি ঠিক করতে হবে।
কী যাচাই করবো
প্রতিটি স্তরে ডেটা প্রবাহকে কী এনকোডিং করছে তা আপনাকে পরীক্ষা করতে হবে।
- HTTP শিরোনাম, শিরোনাম পরীক্ষা করুন।
- অনুরোধের শুরুর দিকে কী পাঠানো হয়েছে তা পরীক্ষা করুন।
- ভুলে যাবেন না যে মাইএসকিউএল প্রায় সর্বত্র এনকোডিং রয়েছে:
- তথ্যশালা
- টেবিল
- কলাম
- সামগ্রিকভাবে সার্ভার
- ক্লায়েন্ট
নিশ্চিত করুন যে সর্বত্র যে সঠিক আছে।
রূপান্তর
আপনি যদি উদাহরণস্বরূপ ডেটা গ্রহণ করেন windows-1250
এবং সঞ্চয় করতে চান utf-8
, তবে সংরক্ষণের আগে এই এসকিউএল ব্যবহার করুন:
SET NAMES 'cp1250';
আপনার যদি ডিবিতে ডেটা থাকে এবং windows-1250
পুনরুদ্ধার করতে চান তবে utf8
ব্যবহার করুন:
SET CHARSET 'utf8';
আরও কয়েকটি নোট:
- ডেটা দেখানোর জন্য খুব বেশি "স্মার্ট" সরঞ্জামগুলির উপর নির্ভর করবেন না। উদাহরণস্বরূপ phpMyAdmin (যখন আমি এটি ব্যবহার করছিলাম তখন করছিল) এনকোডিংটি খুব খারাপ। এবং এটি সমস্ত স্তরগুলির মধ্য দিয়ে যায় তাই এটি খুঁজে পাওয়া শক্ত।
- এছাড়াও, ইন্টারনেট এক্সপ্লোরারের অদ্ভুত নিয়মের ভিত্তিতে এনকোডিংটি "অনুমান" করার সত্যিই বোকামি আচরণ করেছিল।
- সাধারণ সম্পাদকগুলি ব্যবহার করুন যেখানে আপনি এনকোডিং স্যুইচ করতে পারেন। আমি মাইএসকিউএল ওয়ার্কবেঞ্চ সুপারিশ করছি।