PDA

View Full Version : هر کس میخواهد با دیتابیس مشکلی نداشته باشد لطفا اینجا را مطالعه کند



Helen_Farhani
یک شنبه 02 اردیبهشت 1386, 02:44 صبح
با سلام به همه دوستان
بعد از چند روز جستجو در میان تاپیکهای انجمنهای مختلف ( مجید آنلاین - برنامه نویس - پرشین تولز ) بالاخره توانستم از میان پاسخها و جمع بندی مطالب، به تواناییهای زیر دست یابم.
هر چند که شاید این توانایی برای تعدادی از دوستان بسیار سهل و آسان باشد، اما این تاپیک را باز کردم که آن دسته از دوستانی که در این باره مشکل دارند بتوانند به خواسته خود برسند (مثل خودم ).

با انجام مراحل چند گانه ای که مطرح میکنم شما به گزینه های ذیل دست می یابید.
درج اطلاعات فارسی در دیتابیس
نمایش صحیح متون فارسی در صفحات سایت بصورت UTF-8 ( توسط کد برنامه نویس )
نمایش صحیح اطلاعات فارسی در phpMyAdmin
تهیه نسخه پشتیبان
بازیابی نسخه پشتیبانابتدا بایستی در phpMyAdmin یک دیتابیس تعریف کنید. ( کسانی که بر روی هاست میخواهند کار کنند باید از داخل Cpanel دیتابیس خود را تعریف نمایند).


http://img.majidonline.com/pic/82071/1.png


بعد از ساخته شدن دیتابیس باید نام Table را مشخص کنید و تعداد فیلدهایی که نیاز دارید را مشخص نمایید ( تصویر زیر ).


http://img.majidonline.com/pic/82074/2.png


باستی توجه داشته باشید که Collation تمام فیلدهایی که قرار هست در آینده مطالب فارسی در آن جای گیرد utf8_persian_ci باشد. همچنین Collation خود Table را هم utf8_persian_ci انتخاب نمایید. (در صورت نیاز می توانید Collation کل پایگاه داده را تغییر دهید - به شکل اول توجه نمایید) پس تا اینجا باید وضعیت Table شما به صورت تصویر زیر باشد.


http://img.majidonline.com/pic/82078/4.png


و همچنین وضعیت فیلدهایی که قرار هست متون فارسی را در خود جای دهند باید مانند تصویر زیر باشد.


http://img.majidonline.com/pic/82077/3.png


آن دسته از عزیزانی که میخواهد توسط فایل sql جداول و فیلدهای خود را بسازند ( استفاده از تب Import در phpMyAdmin ) توجه داشته باشند که باید فایل sql مربوط به دیتابیس خود را ویرایش نموده و فیلدهایی که قرار هست فارسی باشند را مانند زیر از:


http://img.majidonline.com/pic/82081/6.png

به این شکل تغییر بدهند.


http://img.majidonline.com/pic/82084/5.png


بسیار خوب، تا اینجا دیتابیس آماده شد. از این به بعد در مورد فایلهای PHP که کدهای ما در آن قرار دارد صحبت می کنیم.
اول از هر چیز باید توجه داشته باشید encoding صفحه ای که قرار هست اطلاعات را برای دیتابیس بفرستد حتما باید UTF-8 باشد. برای این منظور از کد زیر در tag هدر صفحات خود استفاده می کنیم.



<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


به عبارتی به این شکل:


http://img.majidonline.com/pic/82086/html.gif


و مرحله آخر مربوط می شود به فایل php شما که یونیکد باشد ( با مرحله قبل قاطی نکنید ) این مرحله با مرحله قبل تفاوت دارد. در مرحله قبل صحبت از encoding صفحه ارسال مطالب فارسی بود. اما در این مرحله در مورد ساختار خود فایل php صحبت می کنیم که به چه شکل پیش برویم که به مشکل بر نخوریم.

خب در اینجا باید اندکی توضیح اضافه بدهم.
وقتی شما یک فایل txt را در notepad ویندوز درست میکنید و مطلب فارسی در آن مینویسید، در هنگام ذخیره سازی باید از گزینه encoding موجود در پنجره save as برنامه notepad گزینه UTF-8 را انتخاب نمایید. ( تصویر زیر )


http://img.majidonline.com/pic/82087/notepad.gif


با انجام این عمل 3 کاراکتر در ابتدای فایل txt شما قرار خواهد گرفت که در برخی از editor ها قابل نمایش بوده و در برخی دیگر قابل نمایش نیست. به عنوان مثال من یک فایل txt که در آن کاراکترهای فارسی وجود دارد را در ادیتور Zend باز کردم. ( تصویر زیر )


http://img.majidonline.com/pic/82089/zend.gif


لازم به ذکر است که در مواقعی که شما از تابع Header در php استفاده میکنید بودن این چند کاراکتر اجرای اسکریپت php شما را متوقف میکند. به عنوان مثال من دستور زیر را در یک فایل که اون 3 کاراکتر در ابتدای آن قرار دارد را ذخیره کرده و اجرا میکنم ( مانند زیر )



header('Location: http://www.yahoo.com/');


با فراخوانی فایل مذکور و اجرای دستور بالا خطای زیر نمایش داده می شود.



Warning: Cannot modify header information - headers already sent by (output started at C:\script\test.php:1) in C:\script\test.php on line 2


اگر شما این 3 کاراکتر را با هر روشی حذف کنید، در فایل مذکور نمی توان فارسی تایپ کرد و نمایش داد . البته چرا، راهی وجود دارد، و آن استفاده از کدهای یونیکد بجای کاراکترهای فارسی میباشد. ( مانند زیر )


این فقط برای تست است

یا



&amp;#1575;&amp;#1610;&amp;#1606; &amp;#1601;&amp;#1602;&amp;#1591; &amp;#1576;&amp;#1585;&amp;#1575;&amp;#1610;
&amp;#1578;&amp;#1587;&amp;#1578; &amp;#1575;&amp;#1587;&amp;#1578;


که ملاحظه می فرمایید، این روش روش مطلوبی نیست.

من اینجا راهی را پیشنهاد میدهم که شما به راحتی یک فایل php داشته باشد که هم بتوانید در سورس برنامه خود فارسی را صحیح تایپ نمایید و هم اطلاعاتی که توسط این فایل php به داخل دیتابیس فرستاده میشود، بصورت صحیح ذخیره گردد. البته روشی را که در اینجا مطرح میکنم روش آنچنان اصولی و حرفه ای نیست ( خودم از این روش استفاده میکنم. البته فقط 1 بار این عمل را انجام داده ام که شرح خواهم داد )

شما بایستی وارد برنامه frontpage بشوید و قبل از هر کاری ابتدا کیبورد خود را در حالت فارسی قرار داده و متنی را تایپ نمایید ( بصورت فارسی ) در نتیجه کدهای HTML شما به این شکل تغییر میکند.



<html>

<head>
<meta http-equiv="Content-Language" content="fa">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>New Page 2</title>
</head>

<body>

<p>تست هست</p>

</body>

</html>

سپس به قسمت تنظیمات صفحه جاری رفته و تنظیمات را مانند شکل زیر ایجاد نمایید.


http://img.majidonline.com/pic/82093/frontpage.gif


کد شما بدینصورت تغییر خواهد کرد.



<html>

<head>
<meta http-equiv="Content-Language" content="fa">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>New Page 2</title>
</head>

<body>

<p>تست هست</p>

</body>

</html>

و در نهایت فایل مذکور را save نموده و پسوند فایل را از txt به php تغییر دهید ( نیازی نیست هر بار که میخواهید یک فایل جدید php ایجاد کنید این مراحل را پشت سر بگذارید. فقط و فقط یک فایل اینطوری درست کنید و برای ایجاد فایلهای بعدی فقط از این فایل یک کپی بگیرید.
من یک نمونه از این فایل را به این پست attach کرده ام.
حالا خیلی راحت میشود در دیتابیس متنهای فارسی را بصورت صحیح ذخیره کرد.

تذکر:
به یاری شما عزیزان و با توجه به نظرات، پیشنهادات، تذکرات و تصحیح هایتان این متن ویرایش خواهد شد.
این آموزش صرفا برای دوستانی هست که هنوز در دیتابیس خود دیتایی وارد نکرده اند و با طی نمودن مراحل فوق یک دیتابیس استاندارد خواهند داشت.
لطفا سوالات مربوط به اینکه چطور اطلاعات قبلی خود را که بصورت غیر استاندارد ذخیره کرده اید را در تاپیک دیگری دنبال نمایید ( البته هر طور مدیر محترم انجمن صلاح بدونند)
بعد از وصل شدن به دیتابیس و انتخاب Table مورد نظر حتما کد زیر را بعد از کد انتخاب جدول وارد کنید.

mysql_query("SET CHARACTER SET utf8;");
mysql_query("SET SESSION collation_connection = 'utf8_persian_ci'");
فایل پیوستی شامل 2 فایل میباشد:
فایل php که برای تست کردن مراحل بالا در نظر گرفته شده
فایل sql هم برای ساخت table و فیلدهای مورد نظر برای درج اطلاعات توسط فایل php موجود میباشد.پ.ن
لتفن از قلحهای املایی سرف نزر کنید :چشمک:
و در مورد انشا هم نمره بدین :خجالت:

oxygenws
یک شنبه 02 اردیبهشت 1386, 08:22 صبح
ممنون به خاطر این مطلب.

نظرات و پیشنهادات:

1- مورد دوم هیچ ربطی به MySQL ندارد. (با توجه به تیتر مطلب)

2- بخش های متن شما از هم متمایز نشده و عملا مطالعه رو شدیدا دشوار کرده... هر جا خواستید یک enter زدید و هر جای دیگه 2 تا و 3 تا و 4 تا و ... نگارش اصولی داره که باید رعایت بشه. بین خطوط یک enter و بین پاراگراف ها 2 enter و ... و در نهاست لطفا در نگارش __فارسی__ دقت کن... مثلا کلمه «فرمائید» نداریم و «فرمایید» داریم، اصلا در فارسی «ئ» نداریم و فرمایید یک کلمه کاملا فارسی است. (نمایید هم همینطور)

ممنون و موفق باشید.

پ.ن: به همین دلیل دوم کل مطلبتون رو نخوندم... واقعا خوندنش سخته... و گرنه اشکال تکنولوژیکال هم یحتمل می گرفتم.

Helen_Farhani
یک شنبه 02 اردیبهشت 1386, 11:09 صبح
مورد دوم هیچ ربطی به MySQL ندارد. (با توجه به تیتر مطلب)
لطفا بیشتر توضیح بدهید. متوجه منظور شما نشدم.



- بخش های متن شما از هم متمایز نشده و عملا مطالعه رو شدیدا دشوار کرده... هر جا خواستید یک enter زدید و هر جای دیگه 2 تا و 3 تا و 4 تا و ... نگارش اصولی داره که باید رعایت بشه. بین خطوط یک enter و بین پاراگراف ها 2 enter و ... و در نهاست لطفا در نگارش __فارسی__ دقت کن... مثلا کلمه «فرمائید» نداریم و «فرمایید» داریم، اصلا در فارسی «ئ» نداریم و فرمایید یک کلمه کاملا فارسی است. (نمایید هم همینطور)
تا جایی که تشخیص دادم، متن را تغییر دادم و فرمایشات شما را اعمال کردم.


پ.ن: به همین دلیل دوم کل مطلبتون رو نخوندم... واقعا خوندنش سخته... و گرنه اشکال تکنولوژیکال هم یحتمل می گرفتم.
از اینکه نظر خود را در مورد این مطلب بیان کردید، تشکر میکنم.
منتها انتظار داشتم که با توجه به دانش بالایتان اشکالات فنی این مطلب را هم بیان میکردید که لااقل این مطلب از لحاظ علمی ارتقا پیدا کند ( جهت استفاده دیگر دوستان )

oxygenws
یک شنبه 02 اردیبهشت 1386, 12:13 عصر
1- مورد زیر ربطی به MySQL نداره:

نمایش صحیح متون فارسی در صفحات سایت بصورت UTF-8 ( توسط کد برنامه نویس )

2- سپاسگزارم. اما فقط غلط های املایی درست شد و مسایل نگارشی درست نشد. واقعا خوندن مطلب اینطوری سخته.

پ.ن: خواهش می کنم. وظیفه است. در مورد اشکالات فنی هم هنوز مطلبتون رو نخوندم چون همونطور که گفتم خوندنش خیلی سخته :(

Helen_Farhani
یک شنبه 02 اردیبهشت 1386, 17:20 عصر
مورد زیر ربطی به MySQL ندارهبله مورد شماره 2 ربطی به MySQL ندارد. منظور من این بود که "نمایش صحیح متون فارسی در صفحات سایت بصورت UTF-8" یکی از دستاوردهای پیروی از توصیه ها و اجرای روشی که مطرح کردم میباشد.



اما فقط غلط های املایی درست شد و مسایل نگارشی درست نشد. واقعا خوندن مطلب اینطوری سخته.با شما موافق هستم. خواندن مطلبی با نگارش غیر صحیح بسیار سخت میباشد. اما لنگه کفش هم در بیابان نعمتی است. :لبخندساده:
به هر حال تا اندازه ای که در توانم بود سعی کردم ار بین تعداد زیادی تاپیک و پست در انجمنهای مختلف، مطلبی را ارائه دهم که برای رفع و حل مشکلات مشابه دیگر دوستان کارساز باشد.


پ.ن
اگر دوستان و اساتید عزیز قبول زحمت فرمایند و دشواری خواندن مطلب مرا متحمل شوند و ایرادهای فنی مطلب را بیان نمایند، امیدوارم این متن برای دیگر دوستان هم مفید واقع شود.

oxygenws
یک شنبه 02 اردیبهشت 1386, 23:09 عصر
بله مورد شماره 2 ربطی به MySQL ندارد. منظور من این بود که "نمایش صحیح متون فارسی در صفحات سایت بصورت UTF-8" یکی از دستاوردهای پیروی از توصیه ها و اجرای روشی که مطرح کردم میباشد.
خوب بله... اما تیتر تاپیک خودتون رو خوندید؟؟ ربط تیتر تاپیک با این مطلب رو نمی فهمم.


اگر دوستان و اساتید عزیز قبول زحمت فرمایند و دشواری خواندن مطلب مرا متحمل شوند و ایرادهای فنی مطلب را بیان نمایند، امیدوارم این متن برای دیگر دوستان هم مفید واقع شود.
اجازه ویرایش به من می دید؟؟

موفق باشید.

Helen_Farhani
دوشنبه 03 اردیبهشت 1386, 00:14 صبح
خوب بله... اما تیتر تاپیک خودتون رو خوندید؟؟ ربط تیتر تاپیک با این مطلب رو نمی فهمم.هدف از ایجاد این تاپیک این بوده که خواننده با خواندن این مطالب با دیتابیس و ذخیره مطالب فارسی در آن مشکلی نداشته باشد. مسلما بعد از ذخیره سازی دیتا در دیتابیس، زمانی از دیتای موجود استفاده خواهد شد ( همه میدانیم که نمایش صحیح مطالب فارسی موجود در دیتابیس، یکی از مشکلاتی است که برخی از دوستان با آن در گیر هستند ) و رفع این مشکل همان گزینه مورد بحث میباشد. :لبخندساده:
نمیدانم چرا، لیست دستاوردهای یک فرایند، بایستی رابطه مستقیم با عنوان آن فرایند داشته باشد!
به هر حال هدف از ایجاد این تاپیک چیز دیگری بوده است و فکر نمیکنم که صحبت در مورد، بیش از این جایز باشد.



اجازه ویرایش به من می دید؟؟با کمال میل :چشمک:



پ.ن
لطفا عنوان تاپیک را با هر عنوان دیگری که مناسب است و بیانگر محتوای تاپیک باشد تغییر دهید.

ممنون

oxygenws
دوشنبه 03 اردیبهشت 1386, 00:20 صبح
هدف از ایجاد این تاپیک این بوده که خواننده با خواندن این مطالب با دیتابیس و ذخیره مطالب فارسی در آن مشکلی نداشته باشد. مسلما بعد از ذخیره سازی دیتا در دیتابیس، زمانی از دیتای موجود استفاده خواهد شد ( همه میدانیم که نمایش صحیح مطالب فارسی موجود در دیتابیس، یکی از مشکلاتی است که برخی از دوستان با آن در گیر هستند ) و رفع این مشکل همان گزینه مورد بحث میباشد. :لبخندساده:
نمیدانم چرا، لیست دستاوردهای یک فرایند، بایستی رابطه مستقیم با عنوان آن فرایند داشته باشد!
به هر حال هدف از ایجاد این تاپیک چیز دیگری بوده است و فکر نمیکنم که صحبت در مورد، بیش از این جایز باشد.
عزیزم برای نمایش اطلاعات فارسی نیازی به دستور header و غیره نیست که لازم باشه header قبلا ارسال شده باشه یا نشده باشه :)


با کمال میل :چشمک:
ممنون.

oxygenws
دوشنبه 03 اردیبهشت 1386, 00:34 صبح
1- مقدار زیر لازم نبود و حذف شد.
<meta http-equiv="Content-Language" content="fa">

2- از خط زیر به آخر مقاله (ابتدای «تذکر») اشتباهه... اون 3 کاراکتر اصلا ربطی به نمایش داده شدن یا نشدن اطلاعات فارسی ندارند و بدون اون ها میشه با فارسی (به راحتی) کار کرد، بدون اینکه حروف فارسی کد بشن.


و مرحله آخر مربوط می شود به فایل php شما که یونیکد باشد ( با مرحله قبل قاطی نکنید ) این مرحله با مرحله قبل تفاوت دارد. در مرحله قبل صحبت از encoding صفحه ارسال مطالب فارسی بود. اما در این مرحله در مورد ساختار خود فایل php صحبت می کنیم که به چه شکل پیش برویم که به مشکل بر نخوریم.
3- سه قسمت زیر رو ننوشتی؟؟ می نویسی؟؟
نمایش صحیح اطلاعات فارسی در phpMyAdmin
تهیه نسخه پشتیبان
بازیابی نسخه پشتیبانبه نظر می رسه بزرگترین مشکل شما کار کردن با فرانت پیج باشه که شدیدا نرم افزار مزخرفی است و شدیدا توصیه می کنم به هیچ وجه طرفش نرید :)
موفق باشی و پاینده و همچنان ممنون.

Helen_Farhani
دوشنبه 03 اردیبهشت 1386, 01:09 صبح
عزیزم برای نمایش اطلاعات فارسی نیازی به دستور header و غیره نیست که لازم باشه header قبلا ارسال شده باشه یا نشده باشهمن در هیچ جای نوشته هایم چنین چیزی را مطرح نکردم. فقط اشاره ای کردم به اینکه:

لازم به ذکر است که در مواقعی که شما از تابع Header در php استفاده میکنید بودن این چند کاراکتر اجرای اسکریپت php شما را متوقف میکند.
از خط زیر به آخر مقاله (ابتدای «تذکر») اشتباهه... اون 3 کاراکتر اصلا ربطی به نمایش داده شدن یا نشدن اطلاعات فارسی ندارند و بدون اون ها میشه با فارسی (به راحتی) کار کرد، بدون اینکه حروف فارسی کد بشن.بله فرمایش شما کاملا درست است. اما با بیان مطلب فوق خواستم توضیح اضافه ای داده باشم برای آن دسته از دوستانی که در پستهای قبل به دنبال این سه کاراکتر میگشتند و با انواع ادیتور ها فایل خود را ادیت میکردند ولی این 3 کاراکتر را مشاهده نمیکردند ( از screen shot هم برای درک بهتر این موضوع استفاده کرده ام )




سه قسمت زیر رو ننوشتی؟؟ می نویسی؟؟
نمایش صحیح اطلاعات فارسی در phpMyAdmin
تهیه نسخه پشتیبان
بازیابی نسخه پشتیبانباز هم سوء تفاهمی دیگر. شما به این نوشته من دقت نکردید. من نگفتم که این 5 گزینه را شرح میدهم. منظور من این بوده که در پایان خواندن این توضیحات 5 مورد زیر بصورت صحیح، حاصل میشود.

با انجام مراحل چند گانه ای که مطرح میکنم شما به گزینه های ذیل دست می یابید.
درج اطلاعات فارسی در دیتابیس
نمایش صحیح متون فارسی در صفحات سایت بصورت UTF-8 ( توسط کد برنامه نویس )
نمایش صحیح اطلاعات فارسی در phpMyAdmin
تهیه نسخه پشتیبان
بازیابی نسخه پشتیبان
به نظر می رسه بزرگترین مشکل شما کار کردن با فرانت پیج باشه که شدیدا نرم افزار مزخرفی است و شدیدا توصیه می کنم به هیچ وجه طرفش نرید :)چطور به این نتیجه رسیدین؟ آخه من اینجا مشکلی را بیان نکردم که شما تصور میکنید، ناشی از استفاده کردن از frontpage باشد!

پ.ن
به شدت از frontpage نفرت دارم و کاملا با شما موافق هستم

oxygenws
دوشنبه 03 اردیبهشت 1386, 08:48 صبح
من باز هم از نگارش این مطلب سپاسگزارم...


بله فرمایش شما کاملا درست است. اما با بیان مطلب فوق خواستم توضیح اضافه ای داده باشم برای آن دسته از دوستانی که در پستهای قبل به دنبال این سه کاراکتر میگشتند و با انواع ادیتور ها فایل خود را ادیت میکردند ولی این 3 کاراکتر را مشاهده نمیکردند ( از screen shot هم برای درک بهتر این موضوع استفاده کرده ام )
از اون سطری که گفتم تا پایان مطلب اشتباهه عزیزه من... اگر می خوای خط به خط رو کوت کنم و برات توضیح بدم.


باز هم سوء تفاهمی دیگر. شما به این نوشته من دقت نکردید. من نگفتم که این 5 گزینه را شرح میدهم. منظور من این بوده که در پایان خواندن این توضیحات 5 مورد زیر بصورت صحیح، حاصل میشود.
حداقل من هیچ مطلبی در مورد گرفتن نسخه پشتیبان نمی بینم!


چطور به این نتیجه رسیدین؟
مشکلی رو بیان نکردید، اما «مشکل» بیان کردید :)

Helen_Farhani
دوشنبه 03 اردیبهشت 1386, 12:40 عصر
هر کس که پستهای این تاپیک را بخواند، عدم وجود یک چیز را در اینجا احساس میکند. و آن، چیزی نیست جز، یک انجمن با عنوان متون و ادبیات فارسی :لبخند: (البته به دوستان عزیز جسارت نشود. بودن چنین انجمنی را بیشتر برای خودم ضروری میدانم :چشمک: )

به هر حال تصور میکنم که داریم از هدف اصلی خود دور میشویم. و پیشنهادم این است که پستهای آخرین این تاپیک را حذف کنید تا با کمک دیگر دوستان بار علمی این تاپیک را افزایش دهیم.

ealvandi
دوشنبه 03 اردیبهشت 1386, 15:17 عصر
با تشکر از توضیحات oxygenws (http://barnamenevis.org/forum/member.php?u=4661) عزیز من به عنوان یکی از افرادی که مشکل فارسی در بانک رو دارم با خوندن مطالب Helen_Farhani بیشتر از 10 % مطالبش رو ، نفهمیدم و ضمنان برای من عنوان پشتیبان گیری خیلی جالب بود که متاسفانه هیچ مطلبی با توجه به اشاره به اون پیدا نکردم.


البته از Helen_Farhani هم خیلی ممنونم که وقتشون رو برای ایجاد این تاپیک گذاشتن .

Helen_Farhani
دوشنبه 03 اردیبهشت 1386, 16:01 عصر
بیشتر از 10 % مطالبش رو نفهمیدم ...

ظاهرا حق با oxygenws عزیز بوده. من سعی میکنم که مطالب بعدی را روان تر بنویسم. در ضمن هر قسمتی را که می فرمائید ویرایش کنم یا توضیح دهم.



برای من عنوان پشتیبان گیری خیلی جالب بوددر حال حاضر مشکل خود من این هست که چطور از اطلاعاتی که در دیتابیس دارم یک Backup درست بگیرم (http://barnamenevis.org/forum/showthread.php?t=65916) و دیتابیس را با توجه به توضیحاتی که در همین تاپیک مطرح کردم را تصحیح کنم و backup را restore کنم.
منظورم این است که اگر شما فرض را بر این بگیری که هیچ دیتایی در دیتابیس نداری، با توجه به توضیحات من در همینجا میتونی اطلاعاتت را از بیس کار، بطور صحیح ذخیره کنید و همچنین مشکلتان در نمایش حروف در (http://barnamenevis.org/forum/showpost.php?p=331079&postcount=7)phpMyAdmin را هم رفع کنید.

problem
پنج شنبه 08 آذر 1386, 18:29 عصر
از جهت این که کسانی که بعداً این تاپیک رو می‌خونن به جواب درست برسن:

اون کاراکتر عجیبی که Helen در اول فایل‌های Notepad می‌دید، اسمش BOM هست و Notepad از معدود نرم‌افزارهایی هست که این کاراکتر رو در ابتدای فایل‌های یونیکد اضافه می‌کنه. چه Frontpage چه Dreamweaver چه هر برنامه طراحی وب یا حتی ویرایش متن درست و حسابی دیگه‌ای که در دسترس هست، هر کدوم رو که امتحان کنید، اون کاراکتر رو اضافه نمی‌کنن.

بحث راجع به این که چرا Notepad این کار رو می‌کنه نه این‌جا ارزش داره مطرح شه، نه ربطی به تاپیک داره. اما بدونید که وجود اون کاراکتر گاهی حتی مشکل‌ساز هم می‌شه (به خصوص اگر توی محیط لینوکس ببرید فایل رو و غیره). پس حتی‌الامکان، برای تغییر Encoding فایلتون به یونیکد، از Notepad استفاده نکنید.

Folaani
جمعه 09 آذر 1386, 09:26 صبح
نوتپید ویندوز که اصلا شعور نداره (امیدوارم نگید به کسی توهین کردی!!)
مثلا End of line ای غیر از مال ویندوز رو نمیشناسه (احتمالا میکروسافت عمدا اینکار رو کرده).
درحالیکه ادیتور داس براحتی فایلهای یونیکس رو براتون به فرمت ویندوزی تبدیل میکنه.
خب این رو هم که خیلی ها نمیدونن و اصلا ادیتور داس رو نمیشناسن.
نتیجه اینکه با خیلی فایلهای یونیکس به مشکل میخورن و میگن به چقدر چرند! یا حوصلشون سر میره و اصلا نمیفهمن قضیه از چه قرار بوده.
شاید اون قضیهء BOM هم یک کلک و سیاستی بوده. چون در استانداردها چنین چیزی وجود نداره و درواقع صریحا Deprecate هم شده.
حالا وقتی یک کسی با پی اچ پی که نرم افزار آزاد هست و با این استانداردهای باز توافق داره یک فایل نوتپد رو میخواد اجرا کنه چی میشه؟!
مبتدیهای زیادی رو دیدم که شاکی بودن؛ شاید خیلی هم منصرف بشن و برن با محصولات عمو بیل کار کنن!
کار میکروسافت همینه. سیاست و حقه و ایجاد ناسازگاری عمدی.

Bahram0110
جمعه 09 آذر 1386, 10:12 صبح
Notepad از معدود نرم‌افزارهایی هست که این کاراکتر رو در ابتدای فایل‌های یونیکد اضافه می‌کنه. چه Frontpage چه Dreamweaver چه هر برنامه طراحی وب یا حتی ویرایش متن درست و حسابی دیگه‌ای که در دسترس هست، هر کدوم رو که امتحان کنید، اون کاراکتر رو اضافه نمی‌کنن.

NotePad++ هم اضافه می کنه!

problem
جمعه 09 آذر 1386, 12:31 عصر
بله متاسفانه ++Notepad هم این کارارکتر رو اضافه می‌کنه. برنامه UltraEdit اضافه نمی‌کنه، اما نمی‌تونه پاکش بکنه :( در واقع، کاراکترهای دیگه مثل LRM و RLM رو هم، می‌تونه بفهمه هستن، اما نمی‌تونه پاکشون کنه.

بین ادیتورهایی که من تا حالا باهاشون کار کردم (در ویندوز، به صورت گرافیکال) فقط EditPlus بود که هم از این خرابکاری‌ها نمی‌کرد، هم می‌شد این کاراکترها رو توشون پاک بکنی. منتها یک ایراد دیگه داشت (که ++Notepad هم داره، اما UltraEdit که الان ازش استفاده می‌کنم نداره) و اون این که، نوع فراخوانی صفحه کلید طوری بود که نمی‌شد مثلاً از TrayLayout استفاده کنی تا نگارش فارسی‌ات (مثل حرف ک در مقابل ک) به شکل دلخواهت باشه.

امیدوارم منظور رو رسونده باشم.

sweb
جمعه 09 آذر 1386, 17:50 عصر
....

بله متاسفانه ++Notepad هم این کارارکتر رو اضافه می‌کنه. برنامه UltraEdit اضافه نمی‌کنه، اما نمی‌تونه پاکش بکنه :( در واقع، کاراکترهای دیگه مثل LRM و RLM رو هم، می‌تونه بفهمه هستن، اما نمی‌تونه پاکشون کنه

....



بهتره اینجا رو یک نگاه بندازین ...
http://en.wikipedia.org/wiki/UTF-8


از خانم فرهانی هم بابت اطلاعات مفیدشون هم متشکرم فقط یک نکته برای دسترسی utf 8 به دیتا بیس به توصیه رفرنس mysql فقط از دستور زیر استفاده کنید و استاندارد دیتابیستون رو بزارین رو utf8_bin


mysql_query("SET NAMES `utf8`;");

problem
دوشنبه 03 دی 1386, 22:47 عصر
بهتره اینجا رو یک نگاه بندازین ...
http://en.wikipedia.org/wiki/UTF-8


البته این (http://en.wikipedia.org/wiki/Byte-order_mark) بیشتر مرتبط هست. با این حال، متوجه منظور شما از این که گفتید به اون‌جا نگاه بندازم نشدم. دقیق‌تر توضیح بدید.