رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کدگذاری json
#1
سلام خدمت دوستان
من مشکل خیلیا رو دارم منتهی چون جستجو کردم و راهکارهایی که پیشنهاد شده بود هیچ کدوم واسه من کار نکرد گفتم بیام اینجا بپرسم از اساتید شاید بشه مشکلم رو حل کنم...

مشکل اصلی م با تابع json_encode هست که برای کارکتر های utf-8 کار نمیکنه
تموم کدهایی که گذاشته شده توی نت رو هم تست کردم اما هیچ کدوم جواب نداد!!!
مثل این کدها
function raw_json_encode($input) {

return preg_replace_callback('/\\u([0-9a-zA-Z]{4})/', function ($matches) {
return mb_convert_encoding(pack('H*',$matches[1]),'UTF-8','UTF-16');
       },
       json_encode($input)
   );
}


این تابع برای کدهایی که بصورت یونیکد باشن جواب میده (تست کردم)
اما متاسفانه خروجی من بصورت ???? نشون میده نه اعداد ansi (اگه درست حدس زده باشم)...


این قطعه کد رو هم گذاشتم اما جواب نداد
query("SET NAMES utf8");  


این صفحه رو هم کامل کدهاش رو خوندم اما متاسفانه چون php م خوب نیست (البته بد هم نیست) بدردم نخورد...
http://php.net/manual/en/function.json-encode.php

هدر رو هم ست کردم

header('Content-Type: text/html; charset=utf-8');

دیگه نمیدونم چکار کنم  Huh

اینم بگم که صفحه م رو هم بصورت utf 8 without bom ذخیره کردم بازم ....

چون از پایگاه داده اطلاعات رومیخونم توی پایگاه داده درست نشون میده اما وقتی واکشی میکنم و تبدیل به json میکنم خراب میشه
پاسخ
تشکر شده توسط:
#2
بهتره قبل از اینکه اطلاعات فارسی رو توی JSON بگذارین با urlencode تبدیل به فرمت استاندارد URL کنید و بعد موقع خوندن هم با urldecode کار کنید.
پاسخ
تشکر شده توسط: majid_7
#3
(10-08-1394، 10:15 ب.ظ)majid_7 نوشته: سلام خدمت دوستان
من مشکل خیلیا رو دارم منتهی چون جستجو کردم و راهکارهایی که پیشنهاد شده بود هیچ کدوم واسه من کار نکرد گفتم بیام اینجا بپرسم از اساتید شاید بشه مشکلم رو حل کنم...

مشکل اصلی م با تابع json_encode هست که برای کارکتر های utf-8 کار نمیکنه

حتما یه جا سوتی دادید. من برای یکبار هم همچین مشکلی نداشتم. وقتی همه چیز به صورت utf۸ هستش حتی پایگاه داده بعید به نظر میرسه. شاید خود دیتابیس یونیکد نیست شاید هست ولی جدولهات نیست. شاید درست یونیکد ذخیره نمیکنی. جیسون اصلا ذخلی به کار شما نداره و فقط به صورت یه فرمت تنظیمش میکنه. میتونی قبل اون پرینت بگیری ببینی مشکل چیه
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان