بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در جستجوی کلمات فارسی در سرور در صورتی که کلمات انگلیسی به خوبی کار می کنه !!!

مدیریت گفتگو
هادی بی غم 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام دوستان

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

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

 <?php
//-------------- farsi sazi
header('Content-Type: text/html; charset=utf-8');
//-------------- farsi sazi
if(isset($_REQUEST['action'])){
$action=$_REQUEST['action'];
} else{
echo "Invalid Data";
exit;
}

if ($action=="read"){
read();
}


function connectToDatabase(){
$connection=mysqli_connect('localhost','music','123456','musics_music');
mysqli_set_charset($connection,'utf8'); //for get farsi font from database
//----------- farsi sazi
mysqli_query("SET NAMES 'utf8'");
mysqli_set_charset("UTF8");
//----------- farsi sazi
if(mysqli_connect_errno()){
echo "Failed to connect to MySQL: ".mysqli_connect_error();
}
return $connection;
}



function read(){
$connection = connectToDatabase();
$result=mysqli_query($connection,"SELECT * FROM music WHERE " . $_REQUEST['filter'] ." ORDER BY " . $_REQUEST['sort'] . " LIMIT 10");

$output=array();
while($row=mysqli_fetch_array($result)){
$record=array();
$record['music_id']=$row['music_id'];
$record['music_name']=$row['music_name'];
$record['music_singer']=$row['music_singer'];
$record['music_musicName']=$row['music_musicName'];
$output[]=$record;
}
echo json_encode($output);
mysqli_close($connection);
}

 

 btnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lastFilter = "music_musicName LIKE '%"+txtSearch.getText()+"%' OR "+"music_name LIKE '%"+txtSearch.getText()+"%' OR "+
"music_singer LIKE '%"+txtSearch.getText()+"%'";
Log.i("LOG", "lastFilter ="+lastFilter);
(new AsyncListViewLoader()).execute();
}
});




نظرات

Hossein Lamei Ramandi 10 سال پیش
کد هاتون رو قرار بدید حدس میزنم انکودینگ کارکتر هارو روی utf8 نزاشتید !
هادی بی غم 10 سال پیش
اکثر نکاتی که برای فارسی سازی توی سایت آموزش داده شده انجام دادم رکورد های دیتابیس با یه برنامه آندرویدی از طرف خودم پر میشه کامل فارسی ارسال میشه و بعد تو برنامه اصلی فارسی بدون مشکل داخل لیست ویو نمایش داده میده اما زمانی که جستجو با کلمات فارسی انجام میشه نتیجه ای نمیده
هادی بی غم 10 سال پیش
این فیلد lastfilter داخل query که استاد داخل آموزش مارکت آموزش داده بودن قرار میگیره
هادی بی غم 10 سال پیش
قسمت هایی برای فارسی سازی هست کامنت گذاری شده
MeY3am 10 سال پیش
اگه برنامتون دارای کلمات انگلیسی هم هست با سرچ کردن اینگونه کلمات مشکلی نداره؟ یا فقط فارسی رو نشون نمیده
هادی بی غم 10 سال پیش
فقط با فارسی مشکل داره ، رفتم توی اینترنت خوندم نوشته بودن حروف فارسی باید به کد های دیگه تبدیل بشه ولی چون انگلیسی بود درست متوجه نشدم شما در جریانش هستین ؟
هادی بی غم 10 سال پیش
u0600-\u06FF\u0750-\u077F\u0590-\u05FF\uFE70-\uFEFF یه همچین چیزی بود
MeY3am 10 سال پیش
لینکشو بزارید که بررسی بشه !
هادی بی غم 10 سال پیش
فعلا دارم از روش فیساغورس استفاده می کنم :| !!! کدهایی که پایین گذاشتم مشخص می کنه کلمه ای که از طرف کاربر وارد شده فارسی هست یا خیر بعدش اومدم اطلاعاتی که از سمت سرور میاد هر رکورد تک به تک میریزم توی متغییر رشته ایبا کلمه مورد نظر مقایسه می کنم !!! که خیلی بده وقتی تعداد رکورد های دیتابیس پر بشه جستجو کردنش خیلی طول میکشه
MeY3am 10 سال پیش
نیاز به این کار نیست، به نظرمن اشکال از کوئری نوشتنتون هست !
هادی بی غم 10 سال پیش
یعنی دستوری که واسه جستجوی کلمه فارسی میفرستم باید با دستور جستجوی کلمه انگلیسی میفرستم فرق داشته باشه ؟
MeY3am 10 سال پیش
شما اول بگید برنامتون برای توسعه از کدام نسخه api استفده میکنه؟ اندروید 4 به پایین یا به بالا
هادی بی غم 10 سال پیش
android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "music.com.musics" minSdkVersion 19 targetSdkVersion 23 versionCode 1 versionName "1.0"
هادی بی غم 10 سال پیش
پایین تر به شکل بهتری api که دارم استفاده می کنم گذاشتم
MeY3am 10 سال پیش
بر روی امولیتور برنامه رو تست میکنید یا گوشی واقعی؟
هادی بی غم 10 سال پیش
روی گوشی تست می کنم اصلا از امولیتور استفاده نمی کنم
MeY3am 10 سال پیش
این لینک هم یه نگاهی بندازین ولی بازم احتمال میدم از کوئری هاتون باشه !
MeY3am 10 سال پیش
لینک مربوطه قسمت Update رو مشاهده کنید!

پاسخ‌ها 2

مشاهده پاسخ صحیح
هادی بی غم 10 سال پیش

 پاسخ صحیح
 public static boolean isfarsi(String s) {
final Pattern RTL_CHARACTERS =
Pattern.compile("[\u0600-\u06FF\u0750-\u077F\u0590-\u05FF\uFE70-\uFEFF]");
Matcher matcher = RTL_CHARACTERS.matcher(s);
if(matcher.find()){
return true; // it's RTL
}

return false; // it's not RTL }

نظرات

MeY3am 10 سال پیش
با این کد درست شد یا خیر؟
MeY3am 10 سال پیش
دوست عزیز با این کد درست شد یا خیر ؟
MeY3am 10 سال پیش
با این کد که نوشتین درست شد یا خیر دوست عزیز؟
MeY3am 10 سال پیش
ای بابا این که همش اسپم شد
هادی بی غم 10 سال پیش
کدهایی که گذاشتم مشخص می کنه کلمه ای که از طرف کاربر وارد شده فارسی هست یا خیر بعدش اومدم اطلاعاتی که از سمت سرور میاد هر رکورد تک به تک میریزم توی متغییر رشته ایبا کلمه مورد نظر مقایسه می کنم !!! که خیلی بده وقتی تعداد رکورد های دیتابیس پر بشه جستجو کردنش خیلی طول میکشه
هادی بی غم 10 سال پیش

 android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
applicationId "music.com.musics"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .