PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل با یک اسکریپت فارسی



vimax
September 30th, 2010, 15:52
سلام
من یه اسکریپتی رو دارم کار می کنم
سیستم روی utf-8 تنظیم شده و دیتابیس هم روی utf8_persian_ci اما زمانی که فراخوانی می کنم سیستم رو.عنوان سایت برای مدت کوتاهی فارسی نیست و اینجوری میاد Ù¾ÛŒØ ..... بعد از مدت زمان کوتاهی که سیستم لود شد تایتل فارسی میشه
کسی همچین مشکلی براش پیش نیومده؟
یادمه قدیما دیتالایف یه همچین مشکلی داشت

Rezash
September 30th, 2010, 17:01
يكي از فايل هات درست utf نيست!
با اديتوري غير استاندارد ويرايش نكردي؟
صفحات رو باز كن...اونهايي رو كه اصلا توشنون كاراكتر فارسي نداري charset رو روي ANSi بذار...و بقيه رو هم با يك اديتور استاندارد UTF بذار...

کسی همچین مشکلی براش پیش نیومده؟
سايت خودم در دو بخش!يك بخشش رو گشتم يافتم همين كار رو كردم...بخش ديگه رو فرصت كردم هنوز!

---------- Post added at 04:01 PM ---------- Previous post was at 03:46 PM ----------

اينم اضافه كنم كه نيازي نيست تك تك فايل ها رو دستي چك كني
من خودم براي شناسايي فايلي كه مشكل داره در جاهاي مختلف اسكريپت از دستورات header براي تست استفاده مي كنم و اين دوستورات هم نسبت به اين مورد يعني وجود كاراكتر اضافي (كه ناشي از همون اديتور غير استاندارد يا charset غير صحيح هست) حساس هستند و بايد قبل از خروجي اي باشند و در اين صورت پشغام خطا مي دند و اطلاع مي دند كه در فلان فايل و فلان خط خروجي داريم كه مشخص ميشه...

AmirHosein
September 30th, 2010, 18:50
والا یه تگ هست که باید تو خط اول فایل مورد نظرتون بزارید برای من هم پیش اومد اما کد رو تو سیستم مغازه ندارم میگردم یه چیزی پیدا میکنم اما فکر کنم رضا داشته باشه:)

Rezash
September 30th, 2010, 20:29
والا یه تگ هست که باید تو خط اول فایل مورد نظرتون بزارید برای من هم پیش اومد اما کد رو تو سیستم مغازه ندارم میگردم یه چیزی پیدا میکنم اما فکر کنم رضا داشته باشه:)

منظورت ob_start هست؟
من شخصا زياد ازش خوشم نمياد ! ولي ممكن هست مشكل رو رفع كنه و ممكن هست نكند !
ob_start رو كه بذاريم تمام خروجي در بافر ذخيره ميشود و تا زماني كه اراده نكنيم(!) هيچ دستوري به بروزر ارسال نمشيود (جز دستورات هدر).
ولي اگر مشكل مثلا در خود فايل index.php باشه ديگه زدن ob_start هم فايده نداره و نتيجه همين هست چون قبل از شروع كد نويسي php كاراكتر خروجي داشته ايم...
البته در اكثر موراد ماژول هاي يك سيستم ويرايش شده هستند و يا صفحات داخلي كه بعدا اينكلود ميشند و ob_start ميتونه كمك شاياني كني.
ولي تا وقتي ميشه مشكل رو اصولي تر حل كرد و با يك تغيير charset مشكل رو حل كرد نيازي نيست براي اين مشكل بافر داشته باشيم.

vimax
September 30th, 2010, 21:22
سلام
مگه نباید این باشه؟
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
با Dreamweaver هم ادیت می کنم

Rezash
September 30th, 2010, 21:31
اين مربوطه به خروجي HTML شماست
خود فايل بايد توسط يك اديتور استاندارد كه از UTF پشتيباني مي كند به صورت UTF خيره بشه
با Dreamweaver خيلي وقت هست كار نكردم ولي احتمال ميدم از اين قابليت پشتيباني كند...
بهرحال نظر من استفاده از اديتور هايي هست كه تخصصا براي ‌php نوشته شده اند
اديتور notepad++ هم خيلي خوبه هم رايگان هم با قابليت پشتيباني از UTF هست.
سپاس

vimax
September 30th, 2010, 21:37
آقا ممنون
چرست رو وسترن دادم درست شد!
میگم ذخیره سازی تحت یونیکد حجم فایل رو بالا میبره نسبت به اینکه خود فایل توش تعریف شه روی چی باز بشه

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

Rezash
September 30th, 2010, 22:34
آقا ممنون
چرست رو وسترن دادم درست شد!
میگم ذخیره سازی تحت یونیکد حجم فایل رو بالا میبره نسبت به اینکه خود فایل توش تعریف شه روی چی باز بشه

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

خواهش مي كنم
سوال اول رو متوجه نشدم، لطفا توضيح بديد.
مشكل دوم : وقتي دانلود مي كنيد فايل رو با ويرايشگر باز كنيد و ببينيد ايا درست هست يا نه...
اگر درست نبود charset رو تغيير نديد و بذاريد همون پيشفرض بمونه و ايمپورت كنيد و در خود cms باهاش درست كار مي كنه...
سي ام اس موقع اتصال به ديتابيس ممكن هست كوئري مربوط به تعيين charset اختصاصي رو داشته باشه و ممكن هست نداشته باشه پس هر گونه تغيير در حالت پيش فرض ممكن هست مشكل ايجاد كنه...

---------- Post added at 09:34 PM ---------- Previous post was at 09:33 PM ----------

و ضمنا اين رو هم دقت كنيد كه charset پيش فرض ديتابيس لوكال شما با ديتابيس سرور يكي باشد.

mather
October 1st, 2010, 09:12
دوست من یک سوال آیا برای اتصال از mysql_pconnect استفاده می کنید؟
من هم چنین مشکلی داشتم از mysql_connect استفاده کردم درست شد.

Rezash
October 1st, 2010, 09:48
دوست من یک سوال آیا برای اتصال از mysql_pconnect استفاده می کنید؟
من هم چنین مشکلی داشتم از mysql_connect استفاده کردم درست شد.

ارتباطي ندارند ، احتمالا موقع ويرايش فايل و ذخيره تغييرات جديد charset فايل رو درست ذخيره كرده ايد ...

vimax
October 2nd, 2010, 01:53
سلام
من یه سیستم خبری فارسی دانلود کردم.
وقتی تیتر آخرین اخبار رو نشون میده ته حرفاش این میاد �
تیتر آخرین خبرها تو این سیستم بنا به تنظیم 60 بود که اینجوری میشه یعنی مثلا اگه تیتر خبری 61 بود 3 تا نقطه بعدش میاد حالا سوالم اینه خود خبر فارسیه.روی تیتر هم کلیک می کنم به صفحه خبر میرم تیترش فارسیه چرا اونجا � این میاد؟
برای مثال خبری با این عنوان می نویسم:
مشکل با یک اسکریپت فارسی
وقتی این تیترشو روی صفحه مربوطه می بینم اینجوریه :
مشکل با یک اسکریپت فارس�...
بعد که روی تیتر کلیک می کنم اصل خبر با تیترش واضحه یعنی این تیتر:
مشکل با یک اسکریپت فارسی

Rezash
October 2nd, 2010, 02:18
جايي از كد رو كه substr ميزنه رو بذار بررسي كنم.
قبلا اتفاقا همين مشكل رو در كد خودم داشتم يادم نيست دقيقا چجوري حلش كردم ... كدت رو بذار يك چك ميزنيم حل ميشه ايشالله!

vimax
October 2nd, 2010, 20:29
<?php do { ?>
<ul>
<li><a href="news_<?php echo $row_rsln['id']; ?>.html" title="تاریخ درج : <?php echo EnNum2FaNum($row_rsln['date']); ?> | <?php echo $row_rsln['title'] ?>" ><?php echo substr($row_rsln['title'],0,50)."..."; ?></a></li></ul>
<?php } while ($row_rsln = mysql_fetch_assoc($rsln)); ?>


اونجایی که نوشته 50 رو بکنم 100 درست میشه تعداد کاراکترها زیاد میشه و مشکل پیش نمیاد اما من میخوام همین 50 باشه
ممنون

یه سوال دیگه هم دارم آیا کدی هست که بشه جایگزین iframe کرد؟ که کار اونو انجام بده ؟ از همین راههایی که مثل بلاگفا بعضی کدها را ممنوع کرده

Rezash
October 2nd, 2010, 21:53
سلام


<?php do { ?>
<ul>
<li><a href="news_<?php echo $row_rsln['id']; ?>.html" title="تاریخ درج : <?php echo EnNum2FaNum($row_rsln['date']); ?> | <?php echo $row_rsln['title'] ?>" ><?php echo mb_substr($row_rsln['title'],0,50,'UTF-8')."..."; ?></a></li></ul>
<?php } while ($row_rsln = mysql_fetch_assoc($rsln)); ?>

براي حل مشكل از تابع mb_substr استفاده كردم و chaeset رو در تابع UTF-8 تعريف كردم.
سپاس