Получение арабского текста из editText в Android

У меня есть приложение в Android, которое имеет editText, который принимает арабский текст. Затем на основе этого арабского текста я делаю запрос в MySQL через php. Проблема заключается в том, что когда я получаю арабский текст из editText, MySQL-запрос возвращает значение null, но когда я пишу арабский текст вручную в программе (не извлекая его из editText), он работает идеально, и бог. В чем проблема, любой может мне помочь.
Благодарю.

Это мой php код

<?php
header("Content-type: text/html; charset=UTF-8");
$con=mysqli_connect("localhost","root","","smd");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$word = $_REQUEST['filter'];
//$word="قط"; if i write here the Arabic word manually the query works fine
mysqli_query($con,"SET CHARACTER SET utf8");
$result = mysqli_query($con,"SELECT * FROM arwn_synset,arwn_gloss WHERE word='$word' AND arwn_synset.synset_id_ar=arwn_gloss.synset_id_ar");
while($row = mysqli_fetch_assoc($result)) {
$output[]=$row;
}
echo json_encode($output);
?>

Это код Android:

//Getting the synset from the user to look for
EditText SynsetEditText = (EditText) findViewById(R.id.synsetEditText);
String synsetString = SynsetEditText.getText().toString();
//Removing white space from the beginning and end of the string
synsetString=synsetString.trim();
//synsetString="قط"; if i write here the Arabic word manually the query works fine
myIntent = new Intent(MainActivity.this,AWNActivity.class);
myIntent.putExtra("synset", synsetString);
startActivity(myIntent);

Это в AWNActivity.java:

String url="http://"+localHost+"/smd/connectA.php";
JSONasyncTask asynctask=new JSONasyncTask();
asynctask.execute(url);private class JSONasyncTask extends AsyncTask<String, Void,JSONArray>
{
@Override
protected JSONArray doInBackground(String... urls)
{
Connect connect=new Connect();
JSONArray jsonArray=connect.ConnectToRESTful(urls[0],synsetString);
return jsonArray;
}
@Override
protected void onPostExecute(JSONArray jsonArray)
{
if(jsonArray!=null)
{
// Do something
}
}
}public JSONArray ConnectToRESTful(String url,String[] wordList)
{
//the synset data to send
String result = "";

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
for (int i=0;i<wordList.length;i++)
nameValuePairs.add(new BasicNameValuePair("filter",wordList[i]));
InputStream is = null;

//http post
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}
catch(Exception e)
{
Log.e("There is a problem. Error in http connection\n", e.toString());
}
//convert response to string
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();

result=sb.toString();
}
catch(Exception e)
{
Log.e("There is a problem. Error converting result.\n", e.toString());
}

JSONArray jsonArray = null;
try
{
jsonArray = new JSONArray(result);
}
catch (JSONException e)
{
Log.e("There is a problem.\n", e.toString());
}
return jsonArray;
}

0

Решение

Вы должны использовать коллекцию utf8_general_ci «в поле таблицы базы данных, чтобы сохранить ваши арабские данные

а также использовать header("Content-type: text/html; charset=UTF-8"); вверху вашего php файла …

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector