সাধারণভাবে সবচেয়ে ভাল উপায় হ'ল টেবিলের জোট পরিবর্তন করা। তবে আমার একটি পুরানো অ্যাপ্লিকেশন রয়েছে এবং এর পার্শ্ব প্রতিক্রিয়া রয়েছে কিনা তা ফলাফলটি অনুমান করতে সত্যিই পারছি না। অতএব আমি কোনওভাবে চেষ্টা করেছি স্ট্রিংটিকে অন্য কোনও ফর্ম্যাটে রূপান্তর করার জন্য যা কোলেশন সমস্যার সমাধান করেছে। আমি যা কাজ করে দেখেছি তা হল স্ট্রিংগুলি এর অক্ষরগুলির একটি হেক্সাডেসিমাল উপস্থাপনায় রূপান্তর করে তুলনা করা। ডাটাবেসে HEX(column).
পিএইচপি-র জন্য এটি করা হয় আপনি এই ফাংশনটি ব্যবহার করতে পারেন:
public static function strToHex($string)
{
$hex = '';
for ($i=0; $i<strlen($string); $i++){
$ord = ord($string[$i]);
$hexCode = dechex($ord);
$hex .= substr('0'.$hexCode, -2);
}
return strToUpper($hex);
}
ডাটাবেস ক্যোয়ারী করার সময়, আপনার আসল ইউটিএফ 8 স্ট্রিংটি utf8_decode()
ডিবিতে ব্যবহারের আগে প্রথমে আইসো স্ট্রিংয়ে (যেমন পিএইচপি ব্যবহার করে) রূপান্তর করতে হবে । কোলেশন টাইপের কারণে ডাটাবেসের ভিতরে ইউটিএফ 8 অক্ষর থাকতে পারে না তাই তুলনাটি ইভেন্টটি কাজ করা উচিত যদিও এটি আসল স্ট্রিংকে পরিবর্তন করে (ইউএসএফ 8 অক্ষরকে রূপান্তর করে যা আইএসএস চরসেটের ফলাফলের সাথে বিদ্যমান নয়? বা এগুলি পুরোপুরি মুছে ফেলা হয়)। কেবল নিশ্চিত হয়ে নিন যে আপনি যখন ডাটাবেজে ডেটা লেখেন, আপনি একই রূপান্তর ইউটিএফ 8 আইএসও রূপান্তর করতে ব্যবহার করেন।