امروز متوجه شدم مدتی ست که بعضی از متن های فارسی وبلاگ به شکل علامت سوال (؟؟؟…) نشان داده می شوند. این متن ها آنهایی نبودند که از دیتابیس خوانده می شدند، بلکه آنهایی بودند که مستقیما در فایل های php نوشته شده بودند. نمایش آنها تا چند روز پیش درست بود و نمیدانم چه اتفاقی افتاد که این خرابی پیش آمد، اما بهرحال به دنبال راه حل گشتم. در اینترنت هرچه جستجو کردم (چه فارسی و چه انگلیسی) همه راه حل ها برای تصحیح encoding جدول های درون دیتابیس و یا connection مربوطه بود. هیچکدام از تصحیح فرمت encoding فایل ها چیزی نگفته بود. خودم با نرم افزار Notepad++ راهی را امتحان کردم و مشکل حل شد. از آنجاییکه ممکن است این مشکل برای هر فارسی زبان دیگری نیز پیش بیاید و راه حلی در اینترنت به سادگی پیدا نکند تصمیم گرفتم آنرا اینجا منتشر کنم.
ابتدا اگر نرم افزار Notepad++ را ندارید، این نرم افزار رایگان را از اینجا دانلود کنید. انصافا نرم افزار ساده و سبک و بسیار بدردبخوری ست! فرقی نمی کند که به چه زبانی برنامه نویسی کنید، احتمالا این نرم افزار به دردتان می خورد.
سپس آن فایل هایی را که کاراکترهای فارسی درونشان به صورت علامت سوال نمایش داده می شوند را با این نرم افزار باز کنید، از منوی بالا وارد Encoding شوید و Encoding in UTF-8 without BOM را انتخاب کنید. فایل را Save کنید و دوباره باز کنید (اگر با سرور کار می کنید آنرا بر فایل روی سرور overwrite کنید). همانطور که می بینید به همین سادگی مشکل برطرف شد!
نکته فنی: نرم افزار Notepad ویندوز هم در پنجره Save As قابلیت انتخاب کدگذاری UTF-8 را دارد، اما حتما از BOM استفاده می کند. در این حالت یک کاراکتر اضافی مزاحم در ابتدای فایل وجود خواهد داشت که هم ممکن است صفحات HTML را بهم بزند و هم ممکن است باعث شود در صفحات PHP هنگام کار با Cookie یا Session با خطای "Headers already sent" مواجه شوید، چرا که این کاراکتر اضافی قبل از هرچیز برای Client ارسال شده است.
سلام اردلان عزیز
مشکل ح به راحتی که شما نوشتی حل نشد حالا چکار کنم؟
شاید مشکل آن مشکلی که من داشتم نیست!
دست شما درد نکنه
ببخشید من بلد نیستم اگه میشه شما این کارو برام انجام بدین در صورت موفقت اعلام کنین تا یوز و پس سایت را بهتون ایمیل کنم خواهشا با ایمیل جواب بدین ممنون می شم این کارو برام انجام بدین
اسم وب سایت شما که به علامت ؟ تبدیل شده از دیتابیس خونده میشه و با چیزی که من در پست بالا توضیح دادم فرق داره. مشکل از جای دیگری هست.
لطفا حالا نگاه کنید
کلا همچی ؟؟؟؟ میشه مطلب عنوان سایت موضوع و… شما نگاه کنید
ممنون
حیلی بهم کمک کردید
سلام بسیار متشکر از راهنمایی که کردید من همین کار رو انجام دادم و مشکل مشابه من هم حل شد
آقا گل گفتی.مشکل ما هم حل شد.دمت گرم.مشکلم این بود که wamp server ، انکودینگ صفحه رو نمیتونه رو utf-8 تنطیم کنه.
عاشقت شدم خیلی خوب شد ایول
عالی بود قبلا درست کرده بودم اما الان هر چی ور رفتم جواب نمیداد تا فارسی سرچ گردم مطلب شما رو خوندم دمت هات!
سلام
مرسی داداش
ببخشید ی پیجی هست ک همش علامت سواله
با اون برنامه هم کار کردم ولی درس نشد
چیکارکنم؟!!
آدرس پیج رو ارسال کنم؟!؟
سلام
اگر مشکل برطرف نشد احتمالا از جای دیگریه. شاید encoding دیتابیس صحیح نیست. برای اونجور مشکل ها راه حل انگلیسی در اینترنت به راحتی گیر میاد.
تشکر
با سلام و احترام
قبل از تغییر کدپیج میل سرور به یونی کد ۸ ، دو تا ایمیل از میل سرورم برای پاسخ دادن به دوستی که طرح پیشنهادی وب سایتم را ارائه داده بود فرستادم که متاسفانه در هنگام رویت تمام آن با علامت سئوال ؟ نشان داده میشوند .
متنش برام از این جهت اهمیت داره که یادم نیست دقیقا چی نوشتم و با کپی متن ایمیل در نوت پد و باز کردن آن در نرم افزار معرفی شده از سوی شما و روش ارائه شده هم نتوانستم علامت سئوال را تبدیل به کارکترهای فارسی کنم ، راهی هست برای تبدیل یا خیر.
علامت سوال رو اگر کپی کنید و جای دیگه پیست کنید همون علامت سوال فقط منتقل میشه، نه کاراکتری که به علامت سوال تبدیل شده بود. فکر می کنم باید encoding میل سرورتون رو برگردونید.
لینک حذف شدببینید موقعی که در کامنت میخوام لینک ارسال کنم اگر بخشی از اون فارسی باشه به شکل بالا در میاد، من این مشکلو چه جوری باید حل کنم ، ببخشید همینجا چندبار تست کردم
این هیچ ایرادی نداره. بعضی کاراکتر ها در آدرس های اینترنتی قابل پذیرش نیستن و تبدیل میشن به یک سری کد دیگه.
اگر مرورگرتون کاراکتر های فارسی در نوار آدرس نشون میده بخاطر اینه که کدهارو واستون ترجمه می کنه و ترجمه شده رو نشون شما میده، اما آدرسی که استفاده می کنه همون کد ها هست، نه کاراکتر های فارسی.
ممنون مهندس
اما من دیدم بعضیا در کامنتهاشون این مشکل وجود نداره ، یعنی لینک ترکیبی از کاراکترهای انگلیسی و فارسی هست
اگر از آدرس بار مرورگر کپی کنید تبدیل میشه، اگر از جای دیگه کپی کنید ممکنه همون فارسی بیاد
با سلام
دوستانی که محتوای فارسی در سایتشون به شکل علامت سوال دیده میشه و متن فارسی در دیتابیس درست ذخیره نمیشه باید COLLATE دیتابیس رو به utf8 تتغییر بدهند.
چون این مشکل خیلی از دوستان است من براتون فایل نصب آماده کردم که با اجرای آن در سایتتون تمام ساختارهای ستونها و جداول دیتابیس به utf8 تبدیل میشه.
فایل زیپ رو از آدرس زیر دانلود کنید. داخل آن فقط یک فایل php قرار داده شدهکد مربوطه در زیر آمده که آن را با ادیتور مناسب مثل note++ یا notepad باز کنید و در ۳ سطر اول طبق نامشون، نام دیتابیس نام کاربری و رمز کاربری را وارد کنید و ذخیره کنید. بعد فایل php رو در صفحه اصلی سایتتون آپلود کنید و از نوار آدرس آنرا اجرا کنید. مانند yoursite.com/change-collation.phpنکته: با اجرای این کد تمام متن و محتوای فارسی که قبل از اینکار به شکل علامت سوال نشون داده میشه از دست میره و باید از اول فارسی ساز یا هرنوع ترجمه سایتتون رو ایمپورت کنید.
<?php
$database_name= 'phpfox377';
$database_username= 'root';
$database_password= 'root';
$db = mysql_connect('localhost',$database_username,$database_password);
if(!$db) echo "Cannot connect to the database - incorrect details";
mysql_select_db($database_name);
$result=mysql_query('show tables');
while($tables = mysql_fetch_array($result)) {
foreach ($tables as $key => $value) {
mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8_general_ci");
}
}
mysql_query("ALTER DATABASE $database_name DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci");
echo "The collation of your database has been successfully changed!";
?>
در لوکال کمی طول میکشه ولی در سرور چون سرعت بالاتره سریعتره.
بعد از اینکه دیتابیس به درستی اصلاح شد پیغام زیر نشون داده میشه :
The collation of your database has been successfully changed!
تبریک : با انجام کارهای گفته شده در بالا ، از این پس محتوای فارسی بدرستی در دیتابیس شما ذخیره و نمایش داده میشود.
موفق باشید.
ممنون بهشاد. با اجازه ت من محتوای فایل رو همینجا آوردم و کمی کامنتت رو ویرایش کردم (مثلا اخطار رو آوردم قبل از کد!)
مطمئن نبودم بشه اینجا کد php رو درست نمایش داد.
ممنون
بابت راهنمای واضحتون سپاس گذارم. مشکلی که من رو عصبی کرده بود حل شد.
سلام
بابا دمت گرم خیلی باحال بود
ایول داری
به امید دیدار
سلام
لطفا بگویید آیا می شود علامت سوال شدن عکس ها را دوباره به حال اول برگرداند؟اگر بله چگونه؟
خیلی حیاتیه ممنون میشم به ایمیلم پلسخ بدهید.
متشکرم
سلام
مطلب بسیار اموزده و کار آمد است دست دوستان درد نکند پیروز تر از قبل باشید فردا مال شماست
سلام
از راهنمایی شما متشکرم
لطفا به سوال من پاسخ دهید.
چرا تصاویر داخل وبلاگ من تبدیل به کادر خالی شده در صورتی که این تصاویر را از پیکو فایل آپلود کردم.
برنامه هلو من همش با علامت سوال داره میاد با این راه که گفتید حل میشه؟
ممنونم.شما انسان خوبی هستید که در فکر حل مشکلات هستییید.ممنونم.زنده باشید
واقعا ممنون
من نمیدونم چجوری درستش کنم… لطفا اگه میشه کمکم کنید
با سپاس
لطفتان عالی
سلام اگه همین مشکل در مورد یه نرم افزار باشه مشکل از کجاست…
داداش خیلی ممنون دستت درد نکنه دیگه ناامید شده بودم خیلی ممنون درست شد خیلی وبسایتت قشنگه امیدوارم موفق و پیروز باشی خدانگهدار
سلام من اینکارو انجام دادم درست نشد…مگه باید فرمت فایل رو از *.txt تغییر بدیم؟
خیر فرمت فایل تاثیری نداره.
اقا میشه من فایل رو براتون بفستم خودتو برام درستش کنید؟
بفرستم؟؟
متاسفانه من فرصت این کار رو ندارم.
مرسی اردلان
ممنونم به دردم خورد ……تشکر……..
باید UTF-8 باشه دیگه توی تنظیمات و یا اینکه بصورت کد این رو به مرورگر بفهمونی
سلام
من سایتی دارم که با استفاده از crawler اطلاعات رو از سایت ها استخراج , در دیتا بیس ذخیره و در سایت پردازش میکنه
اما بدبختانه , این کاراکتر � به شدت عذابم میده , بعضی جاها نوشته میشه
لطفا کمکم کنید
خیلی ازتون ممنون .خیلی در گیرش بودم. فقط حرف (ی) هنوز علامت ؟ نمایش داده میشه .می تونید راهنمایی کنید
سلام من همین مشکل را در بازکردن متون فارسی ذخیره شده در نوت پد ویندوز بشکل ANSI در محیط آندروید دارم لطفا کمک کنید من مترجم نرم افزار هستم و کلیه متون ترجمه شده من در محیط ویندوز بشکل ANSI ذخیره شده تا قابل خواندن برای ویندوزهای غیر فارسی نیز باشد متاسفانه کامپیوترم از بین رفته و قادر به خرید نیستم هیچ اپلیکیشن در آندروید قادر به نمایش صحیح متون ترجمه شده فارسی من نیست لطفا راهنمایی کنید
سپاس
مشکل من اینه که حروف فارسی در فایل های text ویندوزم به صورت ؟ در میاند.
درضمن ویندوزم هم ۱۰ pro است.از نظر درایور ها هم همه نصب شدند به همراه برنامه های مورد نیاز.لطفا درصورت امکان مشکلم را حل کنید.با تشکر از سایت خوبتان
سلام خیلی ممنونم از سایت خوبتون من مشکل برطرف شد سپاس از شما
سلام
راه ساده تری وجود نداره؟ اخه به مشتری که نمیشه گفت هرچی فایل داری با این روش اپلود کن
سلام…
من دنبال این مشکل خیلی گشتم…اینجا هم از همون اول پیدا کردم…حتی روش دیتا بیس رو رفتم حل نشد…مشکل منم همین نوشته های درون صفحات بود…نوشته فارسی رو میگرفتم و به روش خودتون تبدیل میکردم اما باز نمی شد…اما اخرین بار اون نوشته فارسی رو حذف کردم اول انکدینگ رو تغیر دادم و بعد فارسی نوشتم…و مشکل حل شد….سپاسگذارم از تجریبیاتی ک اختیار ما تازه کارا میزارید….
شاید دوستانی ک به این روش حل نشد هم اشتباه اول من باشه ک همون متن رو انکدش رو تغییر میدادم…پاک کنید اول انکد رو تغیر بدین بعد فارسی رو بنویسید…
مرسی واقعا مطلبتون به دردم خورد خدا خیرتون بده ایشالا
سلام خسته نباشید من در ویندوز ۸٫۱ زمان تایپ فارسی در فتوشاپ متن به صورت ؟؟؟؟؟ علامت سوال تایپ میشه. میشه راهنمایی کنید مشکل چیه؟؟؟
سلام اصلا توی ویندوز ۱۰ شصت و چهار بایتی این قسمتو نداره که گفتید:
از منوی بالا وارد Encoding شوید
راه جدیدش چیه؟ من دیگه از Notepad++ استفاده نمی کنم که بدونم.
ممنونم . کمکتون عالی بود. همیشه موفق باشید.
ممنونم اردلان جان به خاطر پست خوبت
سلام ممنون به راحتی درست شد
ممنونم جواب داد.
عالی بود اردلان جان. ممنون
با عرض سلام و خسته نباشید.
فاسل اکسلی دارم که با فرمت csv ذخیره شده و وقتی فایل رو باز می کنم با علامت سوال های زیادی مواجه میشم . نه با save as گرفتن و نه با نرم افزار نام برده حل میشود . لطفا در صورت امکان راهنمایی بفرمایید