مشکل در نوشتن محتوای فایل json با php
با عرض سلام به همگی
برنامه نویسان محترم
بنده با PHP یه سری کد نوشتم که از دیتابیس یه جدول رو میخونه و اونو تو html نشون میده و تو فایل json مینویسه.
مشکل اینجاست که json نیز مانند برخی زبان ها در حالت عادی از utf-8 پشتیبانی نمیکنه.
سیستمی که نوشتم تو html درست کار میکنه و فارسی نشون میده اما تو json درست کار نمیکنه.
میخواستم اگه میشه کمکم کنید.(در ضمن جهت اطلاع سایت های خارجی رو گشتم نبود تو هم نگرد و هر کی خواست میتونم سورس پروژه رو هم برای دانلود بزارم.)
http://markets.germinews.ir/json
منتظرتون هستم...
با احترام./
نقل قول: مشکل در نوشتن محتوای فایل json با php
اتفاقا JSON به صورت پیش فرض از UTF-8 پشتیبانی می کنه. و اگه منظورتون این هست که کاراکتر های فارسی رو به صورت \uXXX نمایش میده این همون کد گذاری کاراکتر های UTF-8 هست و وقتی با تابع json_decode محتویات فایل JSON رو از حالت کد شده در بیارید درست میشن.
نقل قول: مشکل در نوشتن محتوای فایل json با php
البته فک کنم مشکل ایشون در نشون دادن خود فایل json هست و در داخل فایل کاراکترهای unicode به این شکل نشون داده میشن در صورتی که ایشون میخوان متن فارسی عینا نمایش پیدا کنه
خب این مشکلی هست که در php نسخه 5.4 حل شده و اونم استفاده از آرگومان دوم هست به اسم JSON_UNESCAPED_UNICODE و بصورت زیر استفاده میشه
echo json_encode($myarr,JSON_UNESCAPED_UNICODE);
ولی بیشتر هاستها نسخه php بر روی 5.3 هست. برای حل این مشکل من راه حل زیر رو پیشنهاد میدم
1- ابتدا header رو ست کن
header('Content-Type: application/json; charset=utf-8');
2- از تابع زیر برای کارکترها استفاده کن
function jsonRemoveUnicodeSequences($struct) {
return preg_replace("/\\\\\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct));
}
برنامه به شکل زیر در میاد
<?php
header('Content-Type: application/json; charset=utf-8');
function jsonRemoveUnicodeSequences($struct) {
return preg_replace("/\\\\\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct));
}
$myarr = array('نمونه متن فارسی'=>'متن فارسی نمایش ئیدا میکند');
echo jsonRemoveUnicodeSequences(json_encode($myarr));
?>
نقل قول: مشکل در نوشتن محتوای فایل json با php
دوستان ممنون.
دستتون درد نکنه.
از راهنمایی آقا مهرداد استفاده کردم. جواب داد.
نقل قول: مشکل در نوشتن محتوای فایل json با php
سلام
فرض کنید با استفاده از echo json_encode($myarr,JSON_UNESCAPED_UNICODE); کاراکتر های فارسی داخل فایل json نوشته شدند . بعدا برای decode کردن همین کاراکتر ها باید از چه روشی استفاده کنم ؟