PDA

View Full Version : مشکل با یونیکد متن



tolinolin
جمعه 21 شهریور 1393, 11:46 صبح
سلام دوستان

من یه کدی دارم که باهاش پیامک های دریافتی را با api میگیرم، اما یه مشکلی هست، من با این کد مشکلی نداشتم تا اینکه دیشب یه هاست جدید گرفتم و توی این هاست جدید، متن پیامک ها به این صورت دریافت میشه مثلا:

سلام

دقیقا همین کد توی یک هاست دیگه بدون مشکل اجرا میشه، مشکل از کجاست؟

اینم کدش:

<?php
$client = new nusoap_client("http://server.com/");
$receive = $client->call('SMS_GET',array('username'=>'username','password'=>'password','method'=>'1'));
if ($receive == 0) {
echo "0";
} else {
$receive2 = $client->call('SMS_GET',array('username'=>'username','password'=>'password','method'=>'2'));
echo $receive2;
}
?>

بالای صفحه تو HTML اینم گذاشتم اما درست نشد:


<meta charset="UTF-8">

Mohammadsgh
جمعه 21 شهریور 1393, 12:08 عصر
هدر رو چی؟utf8 کردید؟

tolinolin
جمعه 21 شهریور 1393, 12:14 عصر
منظورتون اینه؟

header('content-type text/html charset=utf-8')
اینو میزارم میگه header already sent ، البته فکر نکنم کلا کمکی کنه

godofphp
جمعه 21 شهریور 1393, 12:23 عصر
تگ متا باید داخل تگ header باشه

<header>
<meta charset="UTF-8"></header>

tolinolin
جمعه 21 شهریور 1393, 12:27 عصر
تگ متا باید داخل تگ header باشه

<header>
<meta charset="UTF-8"></header>

واقعا فکر کردید اینو نمیدونم؟! :)

us1234
جمعه 21 شهریور 1393, 14:04 عصر
بعد از تعریف $client = new nusoap_client("http://server.com/"); این خط ها را اضافه کنید :


$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;

tolinolin
جمعه 21 شهریور 1393, 14:14 عصر
بعد از تعریف $client = new nusoap_client("http://server.com/"); این خط ها را اضافه کنید :


$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;

ممنون ولی حل نشد :ناراحت:

بعد یه چیزی دوستان، این خروجی که میده مثلا این:

سلام

من با تابع mb_detect_encoding بررسی کردم میگه UTF-8 هست، پس چرا اینجوری نشون میده آخه خدا :ناراحت:

us1234
جمعه 21 شهریور 1393, 17:55 عصر
شما در مرورگر اوپرا تست کنید .
اوپرا بدون ست کردن کدینگ متن ها فارسی را نمایش میده .
اگر در اوپرا درست بود خبر بدید تا بگم چه کدینگی در اچ تی ام ال اضافه کنید .

ولی اگر اوپرا هم مثل قبل بود فایل nusoap.php را باز کنید دنبال این خط بگردید :
var $soap_defencoding = 'ISO-8859-1';
و اگر بود تبدیلش کنید به :
var $soap_defencoding = 'UTF-8';

و نتیجه را خبر بدید.

tolinolin
جمعه 21 شهریور 1393, 18:10 عصر
شما در مرورگر اوپرا تست کنید .
اوپرا بدون ست کردن کدینگ متن ها فارسی را نمایش میده .
اگر در اوپرا درست بود خبر بدید تا بگم چه کدینگی در اچ تی ام ال اضافه کنید .

ولی اگر اوپرا هم مثل قبل بود فایل nusoap.php را باز کنید دنبال این خط بگردید :
var $soap_defencoding = 'ISO-8859-1';
و اگر بود تبدیلش کنید به :
var $soap_defencoding = 'UTF-8';

و نتیجه را خبر بدید.

ممنون داداش دارم اوپرا را دانلود میکنم بهتون اطلاع میدم تا دقایقی دیگه، در مورد نکته دوم هم خودم قبلا تست کرده بودم، روی UTF-8 هست.

tolinolin
جمعه 21 شهریور 1393, 18:15 عصر
نه تو اوپرا هم همونطوریه :گریه:

به این نکته توجه کنید که این برنامه توی لوکال و توی یه هاست دیگه که سرور ایران هست بدون مشکل کار میکنه اما این یه هاست سرور خارج هست که این مشکل را داره، امکان داره مشکل از هاست باشه؟ خواهشا کمک کنید :گریه:

Mohammadsgh
جمعه 21 شهریور 1393, 19:21 عصر
شاید هاستتون یه چیزی رو پشتیبانی میکنه که هاست های دیگه پشتیبانی نمیکنن؟یا کمتر هاستی پشتیبانی میکنه؟به ادمین هاستتون این موضوع رو بگید ببینید چی میگه؟

tolinolin
جمعه 21 شهریور 1393, 19:40 عصر
شاید هاستتون یه چیزی رو پشتیبانی میکنه که هاست های دیگه پشتیبانی نمیکنن؟یا کمتر هاستی پشتیبانی میکنه؟به ادمین هاستتون این موضوع رو بگید ببینید چی میگه؟

آخه بعید میدونم مشکل از هاست باشه چون برای یه شرکت خیلی خیلی معروفه، حالا نمیگم تبلیغ نشه

مهرداد سیف زاده
جمعه 21 شهریور 1393, 20:43 عصر
حتی بهترین هاست ها هم شاید یه کانفیگ رو جا انداخته باشن.
اگر بهتون phpinfo میده پس مورد زیر رو درش چک کنید


mbstring.internal_encoding

و اگر نبود و مقدار دهی نشده بود پس تابع زیر رو به ابتدای صفحه ای که داره لود میشه اضافه کن


header('content-type: text/html; charset=utf-8');
mb_internal_encoding("UTF-8");
setlocale(LC_CTYPE, 'C');

البته خط اول رو که اضافه کردی و دو خط زیرش رو هم اضافه کن
در آخر اگر هیچکدام کارساز نبود پس باید با پشتیبان هاست حلش کنی. چون من فکر میکنم ارتباط بین شبکه ای شاید مشکل ساز شده. چون ممکنه هست شما رو از سیستم کش خاصی برای لود بیشتر، یا یک آنالایزر خاص برای پایش، یا لود دیتای جانبی در زمان لود شدن سایت و خلاصه هزار و یک کانفیگ دگه که منجر به ایراد در سایت شما شده باشه.

tolinolin
جمعه 21 شهریور 1393, 21:16 عصر
حتی بهترین هاست ها هم شاید یه کانفیگ رو جا انداخته باشن.
اگر بهتون phpinfo میده پس مورد زیر رو درش چک کنید


mbstring.internal_encoding

و اگر نبود و مقدار دهی نشده بود پس تابع زیر رو به ابتدای صفحه ای که داره لود میشه اضافه کن


header('content-type: text/html; charset=utf-8');
mb_internal_encoding("UTF-8");
setlocale(LC_CTYPE, 'C');

البته خط اول رو که اضافه کردی و دو خط زیرش رو هم اضافه کن
در آخر اگر هیچکدام کارساز نبود پس باید با پشتیبان هاست حلش کنی. چون من فکر میکنم ارتباط بین شبکه ای شاید مشکل ساز شده. چون ممکنه هست شما رو از سیستم کش خاصی برای لود بیشتر، یا یک آنالایزر خاص برای پایش، یا لود دیتای جانبی در زمان لود شدن سایت و خلاصه هزار و یک کانفیگ دگه که منجر به ایراد در سایت شما شده باشه.

سلام، ممنونم ازت داداشم، متاسفانه اینم کارساز نشد، پس با خودشون صحبت میکنم ببینم چی میشه :ناراحت:

Mohammadsgh
جمعه 21 شهریور 1393, 22:05 عصر
آره همونطور که گفتم شاید همچین مشکلی باشه:لبخندساده:

tolinolin
جمعه 21 شهریور 1393, 22:19 عصر
آره همونطور که گفتم شاید همچین مشکلی باشه:لبخندساده:

از شما هم ممنونم، تیکت زدم ببینم چی میشه

tolinolin
شنبه 22 شهریور 1393, 00:27 صبح
با تغییر نسخه PHP حل شد، ممنون از دوستان :)