PDA

View Full Version : مشکل فارسی در utf8_decode();



versaPHP
سه شنبه 13 تیر 1391, 00:52 صبح
سلام خدمت دوستان ،

امروز به یه مشکل برخوردم ، وقتی میخوام یه رشته رو از iso-8859-1 به utf-8 تبدیل کنم بعضی کاراکتر خرچنگ قورباغه میشند ، مثلا به نمونه ی زیر تو جه کنید :



<?php
echo cn("احسان"); // احسان با فر مت ايزو

function cn($str){
return mb_convert_encoding($str , 'ISO-8859-1', 'UTF-8');
};

// returned احسا�?

?>





البته این با decode نبود ، ولی با اونم به همین شکل در میاد .

دلیل و راه حلش چیه ؟

ممنون

mohsen6500
سه شنبه 13 تیر 1391, 01:19 صبح
سلام راه حلی که معمولا کاربرد داره اینه که فرمت دیتا بیس ت رو روی utf8_persian_ci بذاری
اطلاعات خودت رو به صورت فارسی بنویسی
و برای فراخوانی بعد از کد اتصال به دیتابیس اون این کد رو بذاری

mysql_query("SET NAMES 'utf8'");

versaPHP
سه شنبه 13 تیر 1391, 03:31 صبح
با تشکر باید عرض کنم که من اصلا اسم دیتابیس نیاوردم ، من فقط می خوام رشته ها رو تبدیل کنم و از سه روش استفاده کردم که هیچکدوم هم جواب نداد متاسفانه و همگی مثل هم بود نتیجشون !

تو این صفحه چنین کاری انجام میشه :
http://www.bitaweb.com/fa/codeConverter.html


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

versaPHP
سه شنبه 13 تیر 1391, 04:59 صبح
مشکل حل شد با این تابع :



function cn($str){
$alphabet = array (
'Û°' => '۰', 'Û±' => '۱', 'Û²' => '۲', 'Û³' => '۳', 'Û´' => '۴', 'Ûµ' => '۵', 'Û¶' => '۶', 'Û·' => '۷', 'Û¸' => '۸',
'Û¹' => '۹', 'Ø¢' => 'آ', 'ا' => 'ا', 'Ø£' => 'أ', 'Ø¥' => 'إ', 'ؤ' => 'ؤ', 'ئ' => 'ئ', 'Ø¡' => 'ء', 'ب' => 'ب',
'Ù¾' => 'پ', 'ت' => 'ت', 'Ø«' => 'ث', 'ج' => 'ج', 'Ú†' => 'چ', 'Ø­' => 'ح', 'Ø®' => 'خ', 'د' => 'د', 'Ø°' => 'ذ',
'ر' => 'ر', 'ز' => 'ز', 'Ú˜' => 'ژ', 'س' => 'س', 'Ø´' => 'ش', 'ص' => 'ص', 'ض' => 'ض', 'Ø·' => 'ط', 'ظ' => 'ظ',
'ع' => 'ع', 'غ' => 'غ', 'ف' => 'ف', 'Ù‚' => 'ق', 'Ú©' => 'ک', 'Ú¯' => 'گ', 'Ù„' => 'ل', 'Ù…' => 'م', 'Ù†' => 'ن',
'Ùˆ' => 'و', 'Ù‡' => 'ه', 'ÛŒ' => 'ی', 'ÙŠ' => 'ي', 'Û€' => 'ۀ', 'Ø©' => 'ة', 'ÙŽ' => 'َ', 'ُ' => 'ُ', 'ِ' => 'ِ',
'Ù‘' => 'ّ', 'Ù‹' => 'ً', 'ÙŒ' => 'ٌ', 'ٍ' => 'ٍ', 'ØŒ' => '،', 'Ø›' => '؛', ',' => ',', 'ØŸ' => '؟'
);

foreach($alphabet as $western => $fa)
$str = str_replace($western, $fa, $str);

return $str;
};




منبع : boplo.ir/php/western-iso-to-persian/