با سلام
شما زمانی از char باید استفاده کنین که طول رشته کوتاه و همیشه ثابت باشه. اگر شما رشته ای کمتر از چیزی که توی دیتابیس تعریف کردید باشه همون فضای تعریف شده رو اشغال میکنه اما varchar برعکس char هست که برفرض شما فیلد نام رو varchar 200 تعریف کردید اگر رشته ای به طول کمتر از 200 وارد فیلد بشه فیلد فضای رشته رو اشغال میکنه و تعریف شده رو. درضمن فضای اشغالی فارسی دو برابر انگلیسی هست یعنی varchar 200 برای فارسی 100 حساب میشه اما برای انگلیسی 200. و برای اینکه فرسی رو داخل فیلد درست ذخیره کنین و نمایش بدید COLLATE utf8_persian_ci باید باشه و زمانی که توی کد به دیتابیس کانکت میشید کوئری زیر رو بعد انتخاب جدول اجرا کنید
mysql_query("SET NAMES UTF8");